JSPM-使用import和使用script标记包含客户端库文件有什么优点/缺点吗



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

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

import "jquery";
import "bootstrap/css/bootstrap.css!"
import "bootstrap";
export class App {
    constructor {
    }
}

问题:与传统的<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>

我的反复试验表明,通过在特定的class/js文件中使用import,它将库限制在该特定的视图文件中,而不是全局可用。

最终,当您为生产构建这些项目时,这些库不需要存在于index.html中吗?

我的观点是:应该使用import关键字,原因如下:

  • 风格问题:这是ES6风格,Aurelia有点强迫你使用它
  • 可读性这很重要:其他开发人员希望您使用import,因此可能会混淆他们
  • 同样,import负责加载,所以如果您只添加一个脚本标记,您可能会添加一些import,然后重新声明一些函数
  • Beauty:我认为在代码中有100个<script>标签不是很好看
  • 捆绑生产。你会用Grunt还是Gulp来凹和丑吗?如果是这样,那就需要额外的工作,因为在默认配置中,它是开箱即用的。如果不…嗯,不,你应该这么做
  • 汇总。最甜蜜的部分来了

JSPM太棒了!不过,这与这个项目有点不同——将存储库与包管理器和客户端模块相结合加载程序,而不是简单地捆绑模块。JSPM允许您使用任何模块格式,甚至在没有构建步骤的情况下进行开发,因此它是创建应用程序的绝佳选择。汇总生成较小不使用复杂SystemJS格式的bundle,因此是一个更好的创建库的选项未来版本的JSPM可能使用Rollup内部,因此您将两全其美

Rollup是使用import的另一个pro。它所做的是剥离你使用的库,并获取你需要的最少的代码量,所以如果你只需要一些来自jQuery的东西,你就不需要让你的访问者下载50KB(或者现在是多少?)。

你可以在这里阅读更多关于Rollup的信息。

最新更新