从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!

关于作者

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/nodejs-bower-intro/

前言
一个新的web项目开始,我们总是很自然地去下载需要用到的js类库文件,比如jQuery,去官网下载名为jquery-1.10.2.min.js文件,放到我们的项目里。当项目又需要bootstrap的时候,我们会重复刚才的工作,去bootstrap官网下载对应的类库。如果bootstrap所依赖的jQuery并不是1.10.2,而是2.0.3时,我们会再重新下载一个对应版本的jQuery替换原来的。

包管理是个复杂的问题,我们要知道谁依赖谁,还要明确哪个版本依赖哪个版本。这些对于开发人员来说,负担过重了。bower作为一个js依赖管理的工具,提供一种理想包管理方式,借助了npm的一些思想,为我们提供一个舒服的开发环境。

你要还不动起手来试试bower,那你一定不会知道,前端开发是件多么享受的事。

目录

  1. bower介绍
  2. bower安装
  3. bower命令
  4. bower使用
  5. 用bower提交自己类库

1. bower介绍

Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,把功能分散到各个模块中,让模块和模块之间存在联系,通过 Bower 来管理模块间的这种联系。

包管理工具一般有以下的功能:

  • 注册机制:每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配,所以包管理工具需要维护注册信息,可以依赖其他平台。
  • 文件存储:确定文件存放的位置,下载的时候可以找到,当然这个地址在网络上是可访问的。
  • 上传下载:这是工具的主要功能,能提高包使用的便利性。比如想用 jquery 只需要 install 一下就可以了,不用到处找下载。上传并不是必备的,根据文件存储的位置而定,但需要有一定的机制保障。
  • 依赖分析:这也是包管理工具主要解决的问题之一,既然包之间是有联系的,那么下载的时候就需要处理他们之间的依赖。下载一个包的时候也需要下载依赖的包。

功能介绍,摘自文章:http://chuo.me/2013/02/twitter-bower.html

2. bower安装

bower插件是通过npm, Node.js包管理器安装和管理的.

我的系统环境

  • win7 64bit
  • Nodejs:v0.10.5
  • Npm:1.2.19
  1. ~ D:\workspace\javascript>node -v
  2. v0.10.5
  3. ~ D:\workspace\javascript>npm -v
  4. 1.2.19

在系统中,我们已经安装好了Nodejs和npm。win7安装nodejs请参考文章:Nodejs开发框架Express3.0开发手记–从零开始

安装bower 
全局安装bower


  1. ~ D:\workspace\javascript>npm install bower -g

新建一个express3的项目nodejs-bower


  1. ~ D:\workspace\javascript>express -e nodejs-bower
  2. ~ D:\workspace\javascript>cd nodejs-bower && npm install

3. bower命令

bower安装后,我们就可以用bower这个命令了。

  1. ~ D:\workspace\javascript\nodejs-bower>bower
  2. Usage:
  3. bower [] []
  4. Commands:
  5. cache Manage bower cache
  6. help Display help information about Bower
  7. home Opens a package homepage into your favorite browser
  8. info Info of a particular package
  9. init Interactively create a bower.json file
  10. install Install a package locally
  11. link Symlink a package folder
  12. list List local packages
  13. lookup Look up a package URL by name
  14. prune Removes local extraneous packages
  15. register Register a package
  16. search Search for a package by name
  17. update Update a local package
  18. uninstall Remove a local package
  19. Options:
  20. -f, --force Makes various commands more forceful
  21. -j, --json Output consumable JSON
  22. -l, --log-level What level of logs to report
  23. -o, --offline Do not hit the network
  24. -q, --quiet Only output important information
  25. -s, --silent Do not output anything, besides errors
  26. -V, --verbose Makes output more verbose
  27. --allow-root Allows running commands as root
  28. See 'bower help ' for more information on a specific command.

Commands,列出了bower支持的各种命令。

  • cache:bower缓存管理
  • help:显示Bower命令的帮助信息
  • home:通过浏览器打开一个包的github发布页
  • info:查看包的信息
  • init:创建bower.json文件
  • install:安装包到项目
  • link:在本地bower库建立一个项目链接
  • list:列出项目已安装的包
  • lookup:根据包名查询包的URL
  • prune:删除项目无关的包
  • register:注册一个包
  • search:搜索包
  • update:更新项目的包
  • uninstall:删除项目的包

4. bower使用

1). 安装jQuery到项目nodejs-bower


  1. ~ D:\workspace\javascript\nodejs-bower>bower install jquery
  2. bower jquery#* not-cached git://github.com/components/jquery.git#*
  3. bower jquery#* resolve git://github.com/components/jquery.git#*
  4. bower jquery#* download https://github.com/components/jquery/archive/2.0.3.tar.gz
  5. bower jquery#* extract archive.tar.gz
  6. bower jquery#* resolved git://github.com/components/jquery.git#2.0.3
  7. bower jquery#~2.0.3 install jquery#2.0.3
  8. jquery#2.0.3 bower_components\jquery

通过执行命令,我们可以看到jQuery的最新版本被下载,并安装到项目的bower_components\jquery目录

查看bower_components/jquery目录,发现了3个文件。


  1. ~ D:\workspace\javascript\nodejs-bower>ls bower_components/jquery -a
  2. . .. .bower.json component.json jquery.js

同样地,我们的项目还需要d3的类库


  1. ~ D:\workspace\javascript\nodejs-bower>bower install d3
  2. bower d3#* not-cached git://github.com/mbostock/d3.git#*
  3. bower d3#* resolve git://github.com/mbostock/d3.git#*
  4. bower d3#* download https://github.com/mbostock/d3/archive/v3.2.8.tar.gz
  5. bower d3#* extract archive.tar.gz
  6. bower d3#* resolved git://github.com/mbostock/d3.git#3.2.8
  7. bower d3#~3.2.8 install d3#3.2.8
  8. d3#3.2.8 bower_components\d3

非常方便,下载并安装完成!

2). 查看项目中已导入的类库


  1. ~ D:\workspace\javascript\nodejs-bower>bower list
  2. bower check-new Checking for new versions of the project dependencies..
  3. nodejs-bower#0.0.0 D:\workspace\javascript\nodejs-bower
  4. ├── d3#3.2.8
  5. └── jquery#2.0.3

3). 安装bootstrap库,并查看依赖情况


  1. ~ D:\workspace\javascript\nodejs-bower>bower install bootstrap
  2. bower bootstrap#* cached git://github.com/twbs/bootstrap.git#3.0.0-rc1
  3. bower bootstrap#* validate 3.0.0-rc1 against git://github.com/twbs/bootstrap.git#*
  4. bower jquery#>= 1.9.0 cached git://github.com/components/jquery.git#2.0.3
  5. bower jquery#>= 1.9.0 validate 2.0.3 against git://github.com/components/jquery.git#>= 1.9.0
  6. bower bootstrap#~3.0.0-rc1 install bootstrap#3.0.0-rc1
  7. bootstrap#3.0.0-rc1 bower_components\bootstrap
  8. └── jquery#2.0.3
  9. ~ D:\workspace\javascript\nodejs-bower>bower list
  10. bower check-new Checking for new versions of the project dependencies..
  11. nodejs-bower#0.0.0 D:\workspace\javascript\nodejs-bower
  12. ├─┬ bootstrap#3.0.0-rc1 extraneous
  13. └── jquery#2.0.3
  14. ├── d3#3.2.8
  15. └── jquery#2.0.3

我们发现bootstrap,对jquery是有依赖的。

4). 删除jQuery库,破坏依赖关系


  1. ~ D:\workspace\javascript\nodejs-bower>bower uninstall jquery
  2. bower conflict bootstrap depends on jquery
  3. Continue anyway? (y/n) y
  4. bower uninstall jquery
  5. ~ D:\workspace\javascript\nodejs-bower>bower list
  6. bower check-new Checking for new versions of the project dependencies..
  7. nodejs-bower#0.0.0 D:\workspace\javascript\nodejs-bower
  8. ├─┬ bootstrap#3.0.0-rc1 extraneous
  9. └── jquery missing
  10. ├── d3#3.2.8
  11. └── jquery missing

5). 安装低版本的jQuery,制造不版本兼容


  1. ~ D:\workspace\javascript\nodejs-bower>bower install jquery#1.7.2
  2. bower jquery#~2.0.3 cached git://github.com/components/jquery.git#2.0.3
  3. bower jquery#~2.0.3 validate 2.0.3 against git://github.com/components/jquery.git#~2.0.3
  4. bower jquery#>= 1.9.0 cached git://github.com/components/jquery.git#2.0.3
  5. bower jquery#>= 1.9.0 validate 2.0.3 against git://github.com/components/jquery.git#>= 1.9.0
  6. bower jquery#1.7.2 cached git://github.com/components/jquery.git#1.7.2
  7. bower jquery#1.7.2 validate 1.7.2 against git://github.com/components/jquery.git#1.7.2
  8. Unable to find a suitable version for jquery, please choose one:
  9. 1) jquery#1.7.2 which resolved to 1.7.2
  10. 2) jquery#~2.0.3 which resolved to 2.0.3 and has nodejs-bower as dependants
  11. 3) jquery#>= 1.9.0 which resolved to 2.0.3 and has bootstrap#3.0.0-rc1 as dependants
  12. Prefix the choice with ! to persist it to bower.json
  13. Choice: 1
  14. bower jquery#1.7.2 install jquery#1.7.2
  15. jquery#1.7.2 bower_components\jquery
  16. ~ D:\workspace\javascript\nodejs-bower>bower list
  17. bower check-new Checking for new versions of the project dependencies..
  18. nodejs-bower#0.0.0 D:\workspace\javascript\nodejs-bower
  19. ├─┬ bootstrap#3.0.0-rc1 extraneous
  20. └── jquery#1.7.2 incompatible with >= 1.9.0 (2.0.3 available)
  21. ├── d3#3.2.8
  22. └── jquery#1.7.2 incompatible with ~2.0.3 (2.0.3 available)

我们可以清楚的看到bower,很明确的告诉了我们,jquery和bootstrap是不兼容的,强大之处大家应该有所体会。

6).升级jQuery,让版本兼容


  1. ~ D:\workspace\javascript\nodejs-bower>bower update jquery
  2. bower jquery#~2.0.3 cached git://github.com/components/jquery.git#2.0.3
  3. bower jquery#~2.0.3 validate 2.0.3 against git://github.com/components/jquery.git#~2.0.3
  4. bower jquery#>= 1.9.0 cached git://github.com/components/jquery.git#2.0.3
  5. bower jquery#>= 1.9.0 validate 2.0.3 against git://github.com/components/jquery.git#>= 1.9.0
  6. bower jquery#~2.0.3 install jquery#2.0.3
  7. jquery#2.0.3 bower_components\jquery
  8. ~ D:\workspace\javascript\nodejs-bower>bower list
  9. bower check-new Checking for new versions of the project dependencies..
  10. nodejs-bower#0.0.0 D:\workspace\javascript\nodejs-bower
  11. ├─┬ bootstrap#3.0.0-rc1 extraneous
  12. └── jquery#2.0.3
  13. ├── d3#3.2.8
  14. └── jquery#2.0.3

多么智能,一键搞定,这才是高效的开发。

7). 查看本地bower已经缓存的类库


  1. ~ D:\workspace\javascript\nodejs-bower>bower cache list
  2. bootstrap=git://github.com/twbs/bootstrap.git#3.0.0-rc1
  3. d3=git://github.com/mbostock/d3.git#3.2.8
  4. jquery=git://github.com/components/jquery.git#1.7.2
  5. jquery=git://github.com/components/jquery.git#2.0.3

8). 查看D3库信息


  1. ~ D:\workspace\javascript\nodejs-bower>bower info d3
  2. d3
  3. Versions:
  4. - 3.2.8
  5. - 3.2.7
  6. - 3.2.6
  7. - 3.2.5
  8. - 3.2.4
  9. - 3.2.3
  10. ...

9). 查看dojo库的url


  1. ~ D:\workspace\javascript\nodejs-bower>bower lookup dojo
  2. dojo git://github.com/dojo/dojo.git

10). 用浏览器打开dojo的发布主页


  1. ~ D:\workspace\javascript\nodejs-bower>bower home dojo
  2. bower dojo#* not-cached git://github.com/dojo/dojo.git#*
  3. bower dojo#* resolve git://github.com/dojo/dojo.git#*
  4. bower dojo#* download https://github.com/dojo/dojo/archive/1.9.1.tar.gz
  5. bower dojo#* extract archive.tar.gz
  6. bower dojo#* resolved git://github.com/dojo/dojo.git#1.9.1

浏览器自动打开:https://github.com/dojo/dojo

11). 查询包含dojo的类库


  1. ~ D:\workspace\javascript\nodejs-bower>bower search dojo
  2. Search results:
  3. dojo git://github.com/dojo/dojo.git
  4. dojox git://github.com/dojo/dojox.git
  5. dojo-util git://github.com/dojo/util.git
  6. dojo-bootstrap git://github.com/samvdb/Dojo-Bootstrap

真是方便实用的技术。

5. 用bower提交自己类库

1). 生成bower.json配置文件


  1. ~ D:\workspace\javascript\nodejs-bower>bower init
  2. bower existing The existing bower.json file will be used and filled in
  3. [?] name: nodejs-bower
  4. [?] version: 0.0.0
  5. [?] main file:
  6. [?] set currently installed components as dependencies? No
  7. [?] add commonly ignored files to ignore list? Yes

查看生成的文件bower.json


  1. {
  2. "name": "nodejs-bower",
  3. "version": "0.0.0",
  4. "ignore": [
  5. "**/.*",
  6. "node_modules",
  7. "bower_components",
  8. "test",
  9. "tests"
  10. ],
  11. "dependencies": {
  12. "d3": "git://github.com/mbostock/d3.git#~3.2.8",
  13. "jquery": "git://github.com/components/jquery.git#~2.0.3"
  14. }
  15. }

2). 在github创建一个资源库:nodejs-bower
3). 本地工程绑定github


  1. ~ D:\workspace\javascript\nodejs-bower>git init
  2. Initialized empty Git repository in D:/workspace/javascript/nodejs-bower/.git/
  3. ~ D:\workspace\javascript\nodejs-bower>git add .
  4. ~ D:\workspace\javascript\nodejs-bower>git commit -m "first commit"
  5. # On branch master
  6. #
  7. # Initial commit
  8. #
  9. # Untracked files:
  10. # (use "git add ..." to include in what will be committed)
  11. #
  12. # app.js
  13. # bower.json
  14. # bower_components/
  15. # node_modules/
  16. # package.json
  17. # public/
  18. # routes/
  19. # views/
  20. nothing added to commit but untracked files present (use "git add" to track)
  21. ~ D:\workspace\javascript\nodejs-bower>git remote add origin https://github.com/bsspirit/nodejs-bower
  22. ~ D:\workspace\javascript\nodejs-bower>git push -u origin master
  23. Counting objects: 565, done.
  24. Delta compression using up to 4 threads.
  25. Compressing objects: 100% (516/516), done.
  26. Writing objects: 100% (565/565), 803.08 KiB, done.
  27. Total 565 (delta 26), reused 0 (delta 0)
  28. To https://github.com/bsspirit/nodejs-bower
  29. * [new branch] master -> master
  30. Branch master set up to track remote branch master from origin.

4). 注册到bower官方类库


  1. ~ D:\workspace\javascript\nodejs-bower>bower register nodejs-bower git@github.com:bsspirit/nodejs-bower.git
  2. bower convert Converted git@github.com:bsspirit/nodejs-bower.git to git://github.com/bsspirit/n
  3. odejs-bower.git
  4. bower nodejs-bower#* resolve git://github.com/bsspirit/nodejs-bower.git#*
  5. bower nodejs-bower#* checkout master
  6. bower nodejs-bower#* resolved git://github.com/bsspirit/nodejs-bower.git#af3ceaac07
  7. Registering a package will make it visible and installable via the registry (https://bower.herokuapp.com), continue? (y/
  8. n) y
  9. bower nodejs-bower register git://github.com/bsspirit/nodejs-bower.git
  10. Package nodejs-bower registered successfully!
  11. All valid semver tags on git://github.com/bsspirit/nodejs-bower.git will be available as versions.
  12. To publish a new version, you just need release a valid semver tag.
  13. Run bower info nodejs-bower to list the package versions.

5). 查询我们自己的包


  1. D:\workspace\javascript\nodejs-bower>bower search nodejs-bower
  2. Search results:
  3. nodejs-bower git://github.com/bsspirit/nodejs-bower.git

6). 安装我们自己的包


  1. D:\workspace\javascript\nodejs-bower>bower install nodejs-bower
  2. bower nodejs-bower#* cached git://github.com/bsspirit/nodejs-bower.git#af3ceaac07
  3. bower nodejs-bower#* validate af3ceaac07 against git://github.com/bsspirit/nodejs-bower.git#*
  4. bower nodejs-bower#* install nodejs-bower#af3ceaac07
  5. nodejs-bower#af3ceaac07 bower_components\nodejs-bower
  6. ├── d3#3.2.8
  7. └── jquery#2.0.3

其实模块化,版本依赖,开发类库,发布类库,安装类库,都是一条命令!还能再简单一点么!快把项目模块化,然后分享给大家吧!!未来是属于开发者的。

转载请注明出处:
http://blog.fens.me/nodejs-bower-intro/

crossplatform---bower解决js的依赖管理的更多相关文章

  1. bower解决js的依赖管理

    bower解决js的依赖管理 前言: 一个新的web项目开始,我们总是很自然地去下载需要用到的js类库文件,比如jQuery,去官网下载名为jquery-1.10.2.min.js文件,放到我们的项目 ...

  2. 90.bower解决js的依赖管理

    转自:https://blog.csdn.net/u011537073/article/details/52951122 前言一个新的web项目开始,我们总是很自然地去下载需要用到的js类库文件,比如 ...

  3. bower解决js库的依赖管理

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  4. Node.js 第三方包的安装、升级、卸载,以及包依赖管理

    本地安装: npm install package-name 全局全装: npm install -g  package-name 举个栗子 全局安装 React项目的脚手架 npm install ...

  5. Bower —— 一个Web的包管理工具

    作者:江剑锋   github地址:https://github.com/bower/bower Bower为何物 Bower是一个Web开发的包管理软件.前端开发中,或多或少,都会以来于现成的fra ...

  6. mvc-6依赖管理

    CommonJS CommonJS规范,主要解决命名空间管理模块和用一套标准的编程模式来加载模块: 很快成为了JavaScript模块写法的事实标准: 它包含IO接口,底层的套接字流,以及单元测试等标 ...

  7. Composer : php依赖管理工具

    原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...

  8. composer php依赖管理工具

    #composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...

  9. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

随机推荐

  1. java内存知识

    java对内存的分类. (网上资料)程序中用来存放数据的内存分为四块,另有一块用于存放代码 1.堆:存放所有new出来的对象(我们知道java并没有全局变量这个概念,有人是把它单独放在properti ...

  2. Hdu OJ 5113 Black And White (2014ACM/ICPC亚洲区北京站) (搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:有k种颜色的方块,每种颜色有ai个, 现在有n*m的矩阵, 问这k种颜色的方块能否使任 ...

  3. sourceTree忽略跟踪文件

    1.未跟踪文件,直接在.gitignore文件打上文件名字,如果要忽略整个文件夹,要在文字后面加上一个/ .如:gradle/ . 2.已跟踪文件,先删除那些文件,再提交到git上,即删除远程的文件, ...

  4. textarea 怎么固定大小,不让调整

    1:彻底禁用拖动(推荐) resize: none; 2:只是固定大小,右下角的拖动图标仍在 width: 200px; height: 100px; max-width: 200px; max-he ...

  5. js之正则1

      在看jquery的源码时,看到对$对象的init入口对参数解析时,正则的迷惑. 疑惑点:z = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ a = ...

  6. ajaxSetup和普通的ajax方法.

    我明明写了ajaxSetup()方法可是它有时候却不一定是会执行,因为比如我common.js里写的ajaxSetup()方法,然后index.js里写了ajax方法,可是有的时候ajaxSetup里 ...

  7. 基于Jquery-ui的自动补全

    1.添加CSS和JS引用 <script type="text/javascript" src="javascript/jquery-1.7.min.js" ...

  8. iOS UILabel根据字符串长度自动适应宽度和高度

    //这个frame是初设的,没关系,后面还会重新设置其size.     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0, ...

  9. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

    public class Three_03 { public static void main(String[] args) { for(int i=100;i<1000;i++){ int a ...

  10. 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素

    import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...