1. 程式人生 > 實用技巧 >oracle中instr與like的區別

oracle中instr與like的區別

1、require 和import 的區別

node程式設計中最重要的思想就是模組化,import 和 require 都是被模組化所使用。在 ES6 當中,用 export 匯出介面,用 import 引入模組。但是在 node 模組中,使用module.exports匯出介面,使用require 引入模組。

兩者的區別如下:

遵循規範:

  • require 是 AMD 規範引入方式
  • import是 ES6 的一個語法標準,如果要相容瀏覽器的話必須轉化成 ES5 的語法

呼叫時間:

  • require是執行時呼叫,所以require理論上可以運用在程式碼的任何地方
  • import是編譯時呼叫,所以必須放在檔案開頭

本質:

  • require 是賦值過程。module.exports後面的內容是什麼,require的結果就是什麼,比如物件、數字、字串、函式等,然後再把require的結果賦值給某個變數,它相當於module.exports的傳送門
  • import 是解構過程,但是目前所有的引擎都還沒有實現import,我們在node中使用babel支援ES6,也僅僅是將ES6轉碼為ES5再執行,import語法會被轉碼為require

就目前來說,所有的引擎都還沒有實現import,我們在node中使用babel支援ES6,也僅僅是將ES6轉碼為ES5再執行,import語法會被轉碼為require。這也是為什麼在模組匯出時使用module.exports

,在引入模組時使用import仍然起效,因為本質上,import會被轉碼為require去執行。

2、require() | exports 的用法

通過require引入基礎資料型別時,屬於複製該變數。通過require引入複雜資料型別時,屬於淺拷貝該物件。

2.1、匯入模組 require() 的用法

require() 函式用於在當前模組中載入別的模組。在函式內寫入模組的路徑即可(相對路徑和絕對路徑都行)

var foo1 = require('./foo');   // .js 副檔名可忽略
var foo2 = require('./foo.js');

var data = require('./data.json');  //
不僅僅是 JS 檔案,也可以是其他檔案

require 相當於module.exports的傳送門,module.exports後面的內容是什麼,require的結果就是什麼,比如物件、數字、字串、函式等,然後再把require的結果賦值給某個變數。

require理論上可以運用在程式碼的任何地方,甚至不需要賦值給某個變數之後再使用,比如:

require('./a')();                //假設a模組是一個函式,此時將立即執行a模組函式
var data = require('./a').data;  //假設a模組匯出的是一個物件
var a = require('./a')[0];      //假設a模組匯出的是一個數組

2.2、輸出介面 exports 的用法

exports 物件是當前模組的匯出物件,用於匯出該模組的方法或屬性。

別的模組通過 require() 函式引用別的模組時實際上得到的就是別的模組的 exports 物件:

exports.hello = function () {
    console.log('Hello World!');
};

匯出模組的方法或者屬性可以直接用 exports,也可以使用 module.exports 來進行匯出。通過module物件可以訪問到當前模組的一些相關資訊,但最多的用途是替換當前模組的匯出物件。

module.exports = function () {
    console.log('Hello World!');
};

實際上,exports是module.exports的一個引用,module.exports 指向的就是exports。

console.log(exports === module.exports);   //輸出true

3、import | export 的用法

import 是編譯時執行的(require是執行時的),它必須放在檔案開頭,而且使用格式也是確定的,不容置疑。它不會將整個模組執行後賦值給某個變數,而是隻選擇import的介面進行編譯,這樣在效能上比require好很多。

import | export 遵循 ES6 規範,支援編譯時靜態分析,便於JS引入巨集和型別檢驗。動態繫結。寫法比較多:

import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
import {readFile} from 'fs'
import {readFile as read} from 'fs'
import fs, {readFile} from 'fs'

export default fs
export const fs
export function readFile
export {readFile, read}
export * from 'fs'

具體可參考:https://www.cnblogs.com/wenxuehai/p/11312851.html#_label1_1