JSPM - 使用import和使用脚本标记包含客户端库文件是否有任何优点/缺点?

The*_*hap 2 javascript import aurelia jspm

我开始在我的Aurelia网络项目中使用JSPM,我想知道使用它是否有任何后果或优势import "<client side library>"

我见过JS类中客户端库的代码:

import "jquery";
import "bootstrap/css/bootstrap.css!"
import "bootstrap";

export class App {
    constructor {

    }
}
Run Code Online (Sandbox Code Playgroud)

问题:以这种方式导入它与文件中的传统包含<script><link>标记相反有什么区别/优点/缺点.html

<html>
<head>
   <link rel="stylesheet" src="<bootstrap path>/bootstrap.css">
</head>
<body>

   <script type="text/javascript" src="<bootstrap path>/bootstrap.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的试验和错误告诉我,通过import在特定的类/ js文件中使用,它将库限制为该特定视图文件,而不是全局可用.

最后,当你为生产构建这些项目时,这些库是否需要存在于index.html中?

Ale*_*nko 5

我的意见是:你应该使用import关键字,这就是为什么:

  • 风格问题:它是ES6风格,Aurelia有点迫使你使用它
  • 重要的可读性:其他开发人员希望您使用import,因此可能会使他们感到困惑
  • 再次,import负责加载,所以如果你只是添加一个脚本标签,你可能会添加一些import,然后一些功能可能会重新声明.
  • 美女:我认为<script>你的代码中有100个标签并不是很漂亮
  • 捆绑生产.你是不是要用Grunt或Gulp来连接和丑化所有这些?如果是这样,这是额外的工作,因为在默认配置中它是开箱即用的.如果不......嗯,不,你应该这样做
  • 汇总.这是最甜蜜的部分.

JSPM太棒了!这与该项目略有不同 - 它将存储库与包管理器和客户端模块加载器相结合,而不是简单地捆绑模块.JSPM允许您使用任何模块格式,甚至无需构建步骤即可开发,因此它是创建应用程序的绝佳选择.Rollup生成较小的捆绑包,不使用复杂的SystemJS格式,因此是创建库的更好选择.JSPM的未来版本可能会在内部使用Rollup,因此您将获得两全其美的优势.

Rollup是另一个使用的专业人士import.它的作用是翻录你使用的库并使用你需要的最少量的代码,所以如果你只需要一些东西,比如jQuery,你就不需要让你的访问者下载50KB(或者你需要多少钱)现在?).

您可以在此处阅读有关Rollup的更多信息.

  • 不要忘记导入会处理依赖关系.如果您编译导入依赖于其他模块的模块,这取决于其他模块,以及其他模块,所有依赖关系都加载到正确的其他模块中,在构造模块时它依赖于内存.还有你不使用的代码的aurelia rip的捆绑过程,并将你用于运行时性能的模块和依赖项捆绑在一起 (2认同)