2017-04-25 55 views
3

我是服務器端的新手javascript,我之前使用nodejs做過簡單的事情,但只有默認庫(我從來不需要使用requireimport關鍵字),但最近我學習ReactNative/ReactXP我看到:爲什麼這麼多種Javascript/Typescript上的導入/導出

import RX = require('reactxp'); 
const popsicle = require('popsicle'); 
import LoginPage = require("./LoginPage"); 
import React, { Component } from 'react'; 
import { AppRegistry, Text } from 'react-native'; 
import AppState from './AppState'; 

並出口:

export default Resources; // Resources is an object 
export = LoginPage; // LoginPage is a class 

的問題是,什麼是的const-require組合之間的差異,import-requireimport-fromexport=什麼是Mozilla's doc

+0

* export *在Mozilla文檔中描述:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export。 – Robert

+1

@Robert'export ='是一個TypeScript符號。 – str

+0

@Robert Node.js使用'module.exports'或'exports'。 ES6模塊使用'export expression'(或類似)。但'export ='(注意它不是'exports =')是一個TypeScript符號。 – str

回答

1

這不是根本的區別: -

  1. const在ES5是新的。在你必須明確地創建它或使用iffy之前。
  2. import是ES6中的新增功能,它僅取代require(取決於常見的js模塊)。
  3. Export也是ES6的一項功能,它可讓您在其他文件中使用moduleobject/var

所以,這只是新的約定&沒什麼。現在默認情況下在ES6之後的Javascript中。

另外,{}可讓您直接暴露模塊/對象屬性,這也是ES6中的新功能。 E.g: -

讓我們你有一個對象&文件obj.js:

export let objj1 = { 
    a : function() {}, 
    b : function() {}, 
} 

所以基本上都使用 1兩種方式。

let obj = require('obj');

a = obj.a or b = obj.b;

OR

進口{A,B}從 'OBJ'

所以,現在你可以直接接取的一個& b性質。

2
import RX = require('reactxp'); 
import LoginPage = require("./LoginPage"); 
export = LoginPage; // LoginPage is a class 

這3個是typescript modules import/export syntax

const popsicle = require('popsicle'); 

這是nodejs modulesrequire

其餘

import React, { Component } from 'react'; 
import { AppRegistry, Text } from 'react-native'; 
import AppState from './AppState'; 
export default Resources; // Resources is an object 

ES2015 modulesimportexport)。

這不是你可以比較它們:它們只是針對不同環境的導入/導出。

相關問題