标签:方式 需要 期望 不能 笔记 style image 多个 pack
现在,越来越多的网站已经从网页模式进到到了 Webapp 模式,它们运行在高级浏览器中,使用 HTML5、CSS3、ES6等技术来开发丰富的功能。WebApp 通常是一个单页面应用,每一个视图通过异步的方式来加载,这样会导致在加载的时候应用越来越多的 Javascript 语言。
现在就需要应对一个问题,如何在开发环境组织好这些碎片化的代码和资源,并且保证它们在浏览器端快速、优雅地加载和更新。这就需要一个模块化系统,这个问题一直都是前端工程师多年来一直探索的问题。
<script src="module1.js"></script>
<script src="module2.js"></script>
<script src="libraryA.js"></script>
<script src="module3.js"></script>
这是最原始的 JavaScript 文件加载方式,这样原始的加载方式暴露了一些显而易见的弊端:
require("module");
require("../file.js");
exports.doStuff = function(){};
module.exports = someValue;
优点:
缺点:
可以兼容多种模块风格,尽量可以利用已有的代码,不仅仅只是 JavaScript 模块化,还有 CSS、图片、字体等资源也需要模块化。
前端模块要在客户端中执行,所以他们需要增量加载到浏览器中。
可以使用分块传输,按需进行懒加载,在实际用到某些模块的时候再增量更新,才是较为合理的模块加载方案。
要实现模块的按需加载,就需要一个对整个代码库中的模块进行静态分析、编译打包的过程。
模块不仅仅可以是指 JavaScript 模块文件,在前端开发过程中还涉及到样式、图片、字体、HTML 模板等众多的资源。
如果它们都可以视作模块,并且都可以通过 require 的方式来加载,将带来优雅的开发体验, 比如:
require("./style.css");
require("./style.less");
require("./template.jade");
require("./image.png");
如何让 require 能加载各种资源?Webpack 应运而生。
Webpack 是一个模块打包器。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。
标签:方式 需要 期望 不能 笔记 style image 多个 pack
原文地址:http://www.cnblogs.com/archy2016/p/a4007b4b2ad3fce253047047cb7f3693.html