<script>
</script> $(function(){...});
>您自己的应用程序代码通常在像全球应用程序之下命名,以防止污染全局范围。没有这个
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>未来
我们将模块导入本地范围并使用它。
<span>export default function $() { ... } </span>>
<span>import $ from 'jquery'; </span> <span>$(function() { ... }); </span>无需全球吗?
commonjs
> amdjspm
打字稿
>这些是当前正在使用的流行工具的缩短列表 - 这是针对初学者和专家的雷区。 移动的成本还突出了您可以混合和匹配许多此类工具并获得不同结果的成本。
Gulp和Grunt一直很受欢迎,这些工具使您能够编写一系列转换以使您的资产通过。 尽管很多人选择直接通过NPM使用这些工具,但它们已经习惯了,但仍然很受欢迎 - 请参阅为什么我将gulp and Grunt用于NPM脚本,并指南将NPM用作构建工具。
>>就我个人而言,我不再关心建造资产管道,我要寻找的是最小的配置工具,它允许我根据需要使用现代工具:诸如Sass,Autoprefixer,Babel和Coffeescript之类的东西,适当的模块系统和加载程序不必担心实施,配置和持续的维护。 从本质上讲,每个开发人员在过去几年中一直在投入时间来创建资产管道,这是大量的重新发明,并且有很多浪费的时间。
>>社区分为诸如浏览,WebPack,JSPM,链轮和Gulp之类的工具。 这不是一个真正的问题,这只是让每个试图了解一条明确前进道路的人都感到困惑。
清除起点>
ES2015模块是JavaScript的一种真实的未来模块格式。>我们还需要一台服务器来运行代码 - 例如,Live-Server是具有实时重新加载功能的很棒的Little Zero-Config HTTP服务器。使用NPM install -G实时服务器全球安装它,然后从项目root到“启动”实时服务器。
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>
浏览器让您在浏览器中需要('模块'),通过捆绑所有依赖项。
><span>export default function $() { ... } </span>打开src/lib.js并添加我们的第一个模块。
>
>更新package.json
中的脚本部分>使用NPM运行浏览
<span>import $ from 'jquery'; </span> <span>$(function() { ... }); </span>运行此脚本
> browserify的介绍
恭喜!我们现在在浏览器中有模块! ?<span>mkdir modules-app </span><span>cd modules-app </span><span>npm init -y </span><span>npm install --save-dev browserify webpack jspm </span><span>mkdir src </span><span>touch src/{entry,lib}.js index.html </span>
>浏览的另一个关键好处是,它不仅可以使您访问您的作者模块,还可以访问NPM模块,让我们安装Lodash以查看。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span> </span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>>编辑src/lib.js
>编辑src/entry.js并调用我们的新Addfive
<span>var App = {}; </span><span>App.<span>Models</span> = {}; </span><span>App.<span>Models</span>.<span>Note</span> = function() {}; </span>
>使用NPM运行浏览器再次创建捆绑包,在浏览器中,您应该看到一个4和一个7,这表明我们已经成功导入并使用了lodash的总和函数。
如果您遵循这一范围,您现在知道您今天开始使用浏览器中使用模块所需的一切,这带来了我们一开始就概述的许多好处。>
>
> webpack>使用NPM运行webpack
运行它
> WebPack比这要多得多! 它确实是模块捆绑机的瑞士军刀。 WebPack还提供了开箱即用的出色工具,例如热模块替换,它将在更改时自动重新加载浏览器中的单个模块 - 类似于LiverEload,但没有页面刷新。
>。
的语言中使用另一种。
在查看如何将它们与模块捆绑器一起使用之前,让我们看看如何直接使用工具。
> coffeescript >编辑咖啡lib.coffee
>添加一个脚本。
运行它
>将脚本添加到package.json以运行TSC可执行 >使用NPM运行TSC >编译器将抱怨无法找到Lodash,因为它需要类型定义才能知道如何使用不是打字稿文件的外部模块。 您可以使用以下方式获取定义文件: 编辑ES6-lib.js 注意:Babel了解可爱的新ES2015模块语法。
>的预设
> /dist中的文件现在包含COMPONJS模块格式的ES5代码,该格式将与我们之前使用的那样,将与浏览或WebPack完美配合。 您可以先用concomjs将ES5转移到ES5,然后再捆绑,也可以使用其他软件包在一个步骤中进行。 >浏览中有插件咖啡,tssify和babelify to thranspile and Bundle。 > WebPack有装载机咖啡加载程序,TS-Loader和Babel-Loader需要不同语言的模块。 jspm
接受所有默认值并确保将Babel用作转板器,该默认值将配置System.js在运行到ES6样式模块时使用Babel。
>
我们的entry.js文件正在动态加载system.import('src/entry.js');。 system.js加载lib.js,发现它需要lodash/sum并获取它。
>最终取消注释index.html中的bundle.js的脚本标签,浏览器应加载一个可以生产的捆绑包,而无需任何额外的http请求。
>
> WebPack比我在这里介绍的要多得多,但是这些简单的设置是一个很棒的起点。
>因此,我们结束了对模块的探索,它们确实解决了很多问题,并且可以真正降低应用程序的复杂性 - 如果工具不会阻碍我们的方式。 如果您还没有使用模块,那么现在是时候了。无需花费不必要的时间来构建资产管道,而是使用只有工作™的简单工具。
> >捆绑和缩合之间有什么区别? > JavaScript模块,捆绑和移动的未来是什么?模块,捆绑和移动看起来很有希望。随着JavaScript的持续演变,我们可以期望更多的高级功能和语法,这将需要转移以与较旧的浏览器兼容。出于绩效原因,捆绑将继续很重要。至于模块,它们正在成为JavaScript的标准部分,我们可以期望在浏览器中为它们提供更好的支持。<span>export default function $() { ... }
</span>
注意:CoffeeScript使用模块的commonjs语法<span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
编辑ts-lib.ts
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
<span>var App = {};
</span><span>App.<span>Models</span> = {};
</span><span>App.<span>Models</span>.<span>Note</span> = function() {};
</span>
<span>export default function $() { ... }
</span>
babel
<span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
>添加一个脚本。
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span>
</span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
运行它
上的顶部
JSPM采用不同的方法,并从模块加载程序系统开始。 System.js是一个项目,将遵循加载器规格开发的项目。
>安装并初始化JSPM项目<span>var double = function(number) {
</span> <span>return number * 2;
</span><span>}
</span>
module<span>.exports = {
</span> <span>double: double
</span><span>}
</span>
>运行JSPM安装lodash以在该目录中安装lodash,您应该在控制台,A 4和7中看到预期的输出,这是发生的事情:<span>var lib = require('./lib.js');
</span><span>console.log(lib.double(2));
</span>
> system.js加载条目。
<span>var App = {};
</span><span>App.<span>Models</span> = {};
</span><span>App.<span>Models</span>.<span>Note</span> = function() {};
</span>
重新访问webpack
>我们的WebPack示例是使用默认选项的最简单示例,它将带有commonjs模块的entry.js汇编为一个捆绑包。 使用webpack做更多的花哨事件时,您需要为所有加载程序配置创建一个自定义配置文件。<span>export default function $() { ... }
</span>
>“更新index.html”仅加载捆绑的文件。<span>import $ from 'jquery';
</span>
<span>$(function() { ... });
</span>
进行转换
<span>mkdir modules-app
</span><span>cd modules-app
</span><span>npm init -y
</span><span>npm install --save-dev browserify webpack jspm
</span><span>mkdir src
</span><span>touch src/{entry,lib}.js index.html
</span>
。
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span>
</span> <span><span><span><title</span>></span>Modules!<span><span></title</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span> <span><span><span><script</span> src<span>="bundle.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
<span>var double = function(number) {
</span> <span>return number * 2;
</span><span>}
</span>
module<span>.exports = {
</span> <span>double: double
</span><span>}
</span>
>
>您不想在一个项目中使用上述所有工具,但重要的是要了解这三个流行的选项,以及在需要时如何使用换手器。 如果您只想使用模块,则使用默认选项浏览,JSPM或WebPack将完成工作。
>保持工具简单和配置灯。快乐捆绑。
经常询问有关JavaScript模块,捆绑和transphitling
的问题(常见问题解答)
> JavaScript模块,捆绑和翻转的区别是什么?
JavaScript模块是可以在其他脚本中导入和使用的各个代码单位。它们有助于组织代码,使其更可维护和重复使用。另一方面,捆绑是将多个JavaScript文件组合到单个文件中的过程。这样做是为了减少HTTP请求的数量,这可以显着提高Web应用程序的性能。转移是将源代码从一种语言或版本转换为另一种语言的过程。在JavaScript的背景下,它通常是指将较新的JavaScript语法转换为较旧的版本,以与较旧的浏览器兼容。>
> JavaScript Transpiler的作用是什么? Babel,在确保在不同浏览器中兼容JavaScript代码方面起着至关重要的作用。它通过将较新的JavaScript语法转换为大多数浏览器支持的旧版本来实现此目的。这允许开发人员使用JavaScript的最新功能而不必担心浏览器兼容性问题。> javaScript模块如何工作?> javaScript模块是一个独立的代码,它导出了特定变量或特定变量的代码其他模块可以使用的功能。导入模块时,其导出变量或功能将用于导入脚本。这允许代码重复使用和更好的代码组织。>一些流行的JavaScript捆绑工具是哪些?>一些流行的JavaScript捆绑工具包括WebPack,lollup和Parcel。这些工具不仅包装JavaScript文件,还提供诸如代码分配,懒惰加载以及处理其他资产(例如CSS和Images)等功能。>
如何在编写现代JavaScript?允许开发人员使用最新功能和语法编写现代JavaScript,而不必担心兼容性问题。转板器将现代JavaScript转换为与大多数浏览器兼容的版本。这样可以确保JavaScript代码始终在不同的浏览器上运行。>我可以使用JavaScript模块而不捆绑吗?但是,由于多个HTTP请求,这可能会导致性能问题。另外,并非所有浏览器都支持JavaScript模块,因此捆绑可以帮助确保兼容性。
>选择捆绑工具的选择取决于项目的要求。要考虑的因素包括项目的规模,所需的功能(例如代码分配或处理其他资产)以及您的个人喜好。尝试一些不同的工具是一个好主意,看看哪种工具最适合您的项目。
以上是理解JavaScript模块:捆绑和移动的详细内容。更多信息请关注PHP中文网其他相关文章!