文档章节

前端模块打包器的开发实践1:需求分析

 雕刻零碎
发布于 2017/04/24 19:39
字数 562
阅读 366
收藏 6

前端模块化现状

分类:以Webpack,browserify的静态分析 VS RequireJS amd模块

(es6 的模块我认为还是一种语法糖而已,在前端浏览器的支持还长时间地需要转换器的转换)

静态分析以使用CommonJS方式组织代码,指定入口文件,默认将所依赖的代码合并到同一个文件中去,文件发送请求少。而且有一个最重要的好处就是Webpack自带的Code Splitting 代码分割可以允许开发者将不同的代码组织在一起,符合前端组件化的需求。

amd模块的模块编写方式是遵守amd规范的,然后通过loader(加载器)将模块按需加载。模块是分散的。

(这里讨论问题时候只着眼于重点

不足就是相互的优点:

静态分析的Webpack , 在按需加载的实现颇为麻烦,甚至有一点不可行

amd模块的编写,文件请求次数多,只有单次依赖的模块需要发起单独请求。文件组织形式(由于amd模块没有考虑Css模块,Html模块的加载,在如今前端组件化组织的前景下逐渐没意义了)唯一是Js.

需求分析

  1. 代码分割,优点就是能够将Html Css Js 组织在同一个文件之中。

  2. 代码局部作用域

    (上述都是组件化的需要)

  3. 模块及依赖打包(模块粒度的控制)

    模块的层级:

    • 全局

    • 局部

    • 私有

全局一般是外部库, 自己写的公有库;局部是在某几个组件都使用的库 ;私有:只是用一次的库

最近很多人都在使用SPA的开发方式,但是,SPA+Router不就是MPA吗?

  1. 由于将模块层次分割出来,这就有了中间层(局部)模块的按需加载需求了

  2. 正因为按需加载,所以有必要使用规范的模块格式

  3. 模块及依赖的识别,以及生成模块树

综上所述,我们形象地说希望构建Webpack+RequireJS的一个工具

© 著作权归作者所有

共有 人打赏支持
粉丝 6
博文 19
码字总数 48259
作品 0
江门
程序员
私信 提问
不聊webpack配置,来说说它的原理

最近在前端论坛闲逛,看到了一些讲parcel、webpack的文章,就突然很好奇,每天都在用的打包工具,他们打包的原理究竟是什么。只有知道了这一点,才可以在众多的打包工具里,找到最适合的那个...

whuzxq
07/02
0
0
前端又双叒叕一个打包工具——parceljs

前端你懂的, 隔断时间不造个轮子会死人。 为了解决什么问题 同样的parcel官网首页的一句话基本就说清楚了为什么要用它 Blazing fast, zero configuration web application bundler 快速和零...

Kurset
2017/12/12
0
0
前端面试之webpack面试常见问题

1:什么是webpack和grunt和gulp有什么不同 答案:Webpack是一个模块打包器,他可以递归的打包项目中的所有模块,最终生成几个打包后的文件。他和其他的工具最大的不同在于他支持code-splitt...

前端攻城小牛
10/27
0
0
下一代前端打包工具与tree-shaking

一、js模块化打包概述   随着js模块化规范AMD、CMD、commonJs的出现,模块打包工具也在不断的出现和演变,依次出现了r.js、browserify和webpack,过去的2015年就是webpack大行其道的一年,...

ouven
2016/01/20
2.6K
5
Javascript资源管理--JRaiser

JRaiser是一个通过加载器进行Javascript资源管理、功能模块化的前端Javascript类库。 JRaiser加载器基于CMD规范,提供了良好的模块封装、调用机制,在利于功能分解的同时,也让您在复杂的模块...

第三方支付接口
2015/03/22
455
0

没有更多内容

加载失败,请刷新页面

加载更多

Kubernetes 1.13.0的快速升级

Kubernetes 1.13.0已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。注意Kubernetes 1.13.0版本暂时不支...

openthings
11分钟前
0
0
go的卸载和环境变量配个人.bashrc

若是用安装包直接解压 http://download.csdn.net/detail/u010026901/7592581 cd /usr/local tar -zxvf go1.1.2.linux-386.tar.gz(先把安装包移到这个目录) 3.安装 $ cd go/src,$ ./all.b......

dragon_tech
17分钟前
0
0
区块链安全 - 以太坊短地址攻击

1 基础知识 EVM虚拟机在解析合约的字节码时,依赖的是ABI的定义,从而去识别各个字段位于字节码的什么地方。关于ABI,可以阅读这个文档: https://github.com/ethereum/wiki/wiki/Ethereum-C...

HiBlock
27分钟前
1
0
自定义函数及内部函数

变量的作用域 局部变量 global $Global及其他超全局数组 静态变量 仅初始化赋值 保留于内存直到response才销毁 global和static变量的区别 global:局部变量全局话 static:定义静态局部变量 函...

关元
28分钟前
1
0

中国龙-扬科
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部