设为首页 收藏本站
查看: 1018|回复: 0

[经验分享] 扒一扒前端包管理器

[复制链接]

尚未签到

发表于 2017-2-23 10:41:25 | 显示全部楼层 |阅读模式
  好久没有写文章了,前端时间一直瞎忙,最近总算有空闲时间可以好好学习下了,今天和大家分享一下有关前端包管理器的东西,主要把工作中常用的bower与最近一直在研究的browserify、duo以及快过时的component进行了一下介绍与对比,都是干货,希望大家勿喷。啦啦啦,话不多说,开始吧:
  一、Bower
DSC0000.jpg

  Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,把功能分散到各个模块中,让模块和模块之间存在联系,通过 Bower 来管理模块间的这种联系,其主要作用就是:为模块的安装、升级和删除,提供一种统一的、可维护的管理模式。
  包管理工具一般有以下的功能:
  · 注册机制:每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配,所以包管理工具需要维护注册信息,可以依赖其他平台。
  · 文件存储:确定文件存放的位置,下载的时候可以找到,当然这个地址在网络上是可访问的。
  · 上传下载:这是工具的主要功能,能提高包使用的便利性。比如想用jquery 只需要 install 一下就可以了,不用到处找下载。上传并不是必备的,根据文件存储的位置而定,但需要有一定的机制保障。
  · 依赖分析:这也是包管理工具主要解决的问题之一,既然包之间是有联系的,那么下载的时候就需要处理他们之间的依赖。下载一个包的时候也需要下载依赖的包。
  首先,安装Bower:
DSC0001.jpg
DSC0002.jpg

  下面是bower常用的一些命令:

DSC0003.jpg

  然后,使用bower install安装模块,下面是一些例子:
DSC0004.jpg

  Bower的安装实际上就是将需要的模块及模块的依赖下载到当前目录的bower_components子目录中,通常在安装时会自动生成bower_components目录,此外,还可以通过手动设置bower_components目录的存放路径,如下图所示,在工程中添加.bowerrc配置文件,内容如下:
DSC0005.jpg

  下载后,就可以直接将文件插入网页。
DSC0006.jpg

  bower update命令用于更新模块:
DSC0007.jpg


如果不给出模块名称,则更新所有模块。

  bower uninstall 命令用于卸载模块:
DSC0008.png
注意,默认情况下,会连所依赖的模块一起卸载。比如,如果卸载jquery-ui,会连jquery一起卸载,除非还有别的模块依赖jquery。

  二、Browserify
DSC0009.jpg

  Browserify的出现可以让Nodejs模块跑在浏览器中,用require()的语法格式来组织前端的代码,加载npm的模块。在浏览器中,调用browserify编译后的代码,同样写在<script>标签中。
  用 Browserify 的操作,分为3个步骤。
  1. 写node程序或者模块
  2. 用Browserify 预编译成 bundle.js
  3. 在HTML页面中加载bundle.js
  Browserify 的发布页:http://browserify.org/
  首先,安装Browserify:
DSC00010.jpg

  以下是browserify常用命令:
DSC00011.jpg


  然后,写一个服务器端脚本即nodejs文件:
DSC00012.jpg

  脚本文件完成,现在可以用browserify来进行编译:
DSC00013.jpg

  “>”左边的是要编译的文件,右边是编译后的文件,文件的路径可以自己指定。Browserify编译的时候,会将脚本所依赖的模块一起编译进去。这意味着,它可以将多个模块合并成一个文件。
  编译完成后直接将文件插入页面,并在页面调用编译后的函数:
DSC00014.jpg

  在浏览器中打开,查看效果:
DSC00015.png

  三、component
DSC00016.jpg

  Component是Express框架的作者TJ Holowaychuk开发的模块管理器。它的基本思想,是将网页所需要的各种资源(脚本、样式表、图片、字体等)编译后,放到同一个目录中(默认是build目录)。
  首先,安装Component

DSC00017.jpg

  常用命令:
DSC00018.jpg

  然后,在项目根目录下,新建一个index.html。
DSC00019.jpg

  上面代码中的build.css和build.js,就是Component所要生成的目标文件。接着,在项目根目录下,新建一个component.json文件,作为项目的配置文件。
DSC00020.jpg

  上面代码中,指定JavaScript脚本和样式表的原始文件是multiply.js和index.css两个文件,并且样式表依赖normalize模块(不低于3.0.0版本,但不高于4.0版本)。这里需要注意,Component模块的格式是"github用户名/项目名"。
  最后,运行component build命令编译文件。

DSC00021.jpg

  浏览器中查看效果:

DSC00022.jpg

  在编译的时候,Component自动使用autoprefixer为CSS属性加上浏览器前缀。目前,Component似乎处于停止开发的状态,代码仓库已经将近半年没有变动过了,官方也推荐优先使用接下来介绍的Duo。
  四、Duo
DSC00023.jpg


Duo是在Component的基础上开发的,语法和配置文件基本通用,并且借鉴了Browserify和Go语言的一些特点,相当地强大和好用。

  首先,安装Duo。
DSC00024.jpg

  然后,编写一个本地文件test-duo.js。
DSC00025.jpg

  上面代码加载了uid和fmt两个模块,采用Component的"github用户名/项目名"格式。
  接着,编译最终的脚本文件。
DSC00026.jpg

  编译后的文件可以直接插入网页。
DSC00027.jpg

  Duo不仅可以编译JavaScript,还可以编译CSS。下面是style.css的内容
DSC00028.jpg

  编译时,Duo自动将include.css,与当前样式表合并成同一个文件。

DSC00029.jpg

  编译后,插入网页即可。
DSC00030.jpg

  浏览器中查看效果:

  (完)
  PS:希望广大读者朋友批评指证,如需转载请注明出处.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346110-1-1.html 上篇帖子: .Net Core 跨平台系列之环境部署 下篇帖子: PhoneCat App 教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表