在浏览器上使用Javascript require和import
我知道在浏览器上使用Javascript require和import,javascript,node.js,typescript,Javascript,Node.js,Typescript,我知道require不在浏览器上,但为什么它是特定于nodejs的呢?typescript/ES6中的从“某个模块位置”导入{some module}是否确实执行了相同的操作 另外,是否可以使用导入而不是使用在网页中嵌入js文件?在nodejs中,require的实现方式与requirejs类似。它不是一种语言特征,而是一种普通的功能 如果在node.js中切换到调试模式,您将看到每个填充都被包装到一个函数中: (function( exports, require, module, __fi
require
不在浏览器上,但为什么它是特定于nodejs的呢?typescript/ES6中的从“某个模块位置”导入{some module}
是否确实执行了相同的操作
另外,是否可以使用
导入
而不是使用
在网页中嵌入js文件?在nodejs中,require
的实现方式与requirejs
类似。它不是一种语言特征,而是一种普通的功能
如果在node.js中切换到调试模式,您将看到每个填充都被包装到一个函数中:
(function( exports, require, module, __filename, __dirname) {
// the original source of the file
})
另一方面,import
是ES6规范的一部分
对于import
和require
,node.js内部也会这样做,只是使用了另一种语法。TypeScript或WebPack将导入
转换为与上面类似的内部语法
在这里可以看到import
的浏览器支持:
在nodejs中
require
的实现方式与requirejs
类似。它不是一种语言特征,而是一种普通的功能
如果在node.js中切换到调试模式,您将看到每个填充都被包装到一个函数中:
(function( exports, require, module, __filename, __dirname) {
// the original source of the file
})
另一方面,import
是ES6规范的一部分
对于import
和require
,node.js内部也会这样做,只是使用了另一种语法。TypeScript或WebPack将导入
转换为与上面类似的内部语法
在这里可以看到import
的浏览器支持:
我知道require
不在浏览器上,但为什么它是特定于nodejs的呢?typescript/ES6中的从“某个模块位置”导入{some module}
是否确实执行了相同的操作
没错,require
不是本机浏览器功能。但是,它是CommonJS规范的一部分,但不是node.js独有的。您知道,在ES2015/ES6之前,没有一种本地方式来进行JavaScript的模块化组织/加载。为了解决这个问题,出现了两种主要的方法:CommonJS和异步模块定义(AMD)
两者都有一个require
“关键字”,用于将指定模块加载到上下文中。但是,每个应用程序都以不同的方式加载它。你可以阅读很多关于不同问题的不同之处,比如:。主要区别在于CommonJS是同步的,而AMD是异步的
不同的框架和库使用不同的加载程序。AMD由require.js、Dojo和AngularJS使用(尽管并不完全符合规范)。CommonJS最著名的实现是node.js实现的
我知道require
不在浏览器上,但为什么它是特定于nodejs的呢?typescript/ES6中的从“某个模块位置”导入{some module}
是否确实执行了相同的操作
没错,require
不是本机浏览器功能。但是,它是CommonJS规范的一部分,但不是node.js独有的。您知道,在ES2015/ES6之前,没有一种本地方式来进行JavaScript的模块化组织/加载。为了解决这个问题,出现了两种主要的方法:CommonJS和异步模块定义(AMD)
两者都有一个require
“关键字”,用于将指定模块加载到上下文中。但是,每个应用程序都以不同的方式加载它。你可以阅读很多关于不同问题的不同之处,比如:。主要区别在于CommonJS是同步的,而AMD是异步的
不同的框架和库使用不同的加载程序。AMD由require.js、Dojo和AngularJS使用(尽管并不完全符合规范)。CommonJS最著名的实现是node.js。
require
实现,这是CommonJS规范的权宜之计(至少从node.js的角度来看),因为在ES6之前,在基于浏览器的JavaScript中没有“真正”的方式进行模块化加载。CommonJS、AMD和jQueries插件系统(某种程度上)都试图填补这一角色,直到ES6出现并引入了import
。您能否更详细地解释一下“也可以使用import而不是使用嵌入js文件在网页中?”的意思?require
是CommonJS规范的权宜之计吗(至少从node.js的角度来看)由于在ES6之前没有“真正”的方式在基于浏览器的JavaScript中进行模块化加载。CommonJS、AMD和jQueries插件系统(某种程度上)都试图填补这个角色,直到ES6出现并引入了import
。您能更详细地解释一下您的意思吗“此外,是否可以使用导入而不是使用将js文件嵌入网页?”?