博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bower介绍及用法(转)
阅读量:5974 次
发布时间:2019-06-19

本文共 7977 字,大约阅读时间需要 26 分钟。

hot3.png

 

Bower介绍 2014.05.10

1. bower介绍

Bower 是用于 web 前端开发的包管理器。对于前端包管理方面的问题,它提供了一套通用、客观的解决方案。它通过一个 API 暴露包之间的依赖模型,这样更利于使用更合适的构建工具。bower 没有系统级的依赖,在不同 app 之间也不互相依赖,依赖树是扁平的。

bower-logo

Bower 运行在 Git 之上,它将所有包都视作一个黑盒子。任何类型的资源文件都可以打包为一个模块,并且可以使用任何规范(例如:AMD、CommonJS 等)。

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

  • 注册机制:每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配,所以包管理工具需要维护注册信息,可以依赖其他平台。

  • 文件存储:确定文件存放的位置,下载的时候可以找到,当然这个地址在网络上是可访问的。

  • 上传下载:这是工具的主要功能,能提高包使用的便利性。比如想用 jquery 只需要 install 一下就可以了,不用到处找下载。上传并不是必备的,根据文件存储的位置而定,但需要有一定的机制保障。

  • 依赖分析:这也是包管理工具主要解决的问题之一,既然包之间是有联系的,那么下载的时候就需要处理他们之间的依赖。下载一个包的时候也需要下载依赖的包。

功能介绍,摘自文章:

2. 安装

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

npm 是 node 程序包管理器。它是捆绑在 node.js 的安装程序上的,所以一旦你已经安装了 node,npm 也就安装好了。

在 mac上 安装 node.js 方法:

brew install nodejs

通过 npm 安装 bower 到全局环境中:

npm install -g bower

3. 使用

安装之后,可以通过 bower help 命令可以获取更多帮助信息。了解了这些信息就可以开始了。

安装包及其依赖的包

Bower 提供了几种方式用于安装包:

# Using the dependencies listed in the current directory's bower.json bower install # Using a local or remote package bower install 
 # Using a specific Git-tagged version from a remote package bower install 
#

其中,<package> 可以是以下列出的一种:

  • 注册到 bower 中的一个包名, 例如:jquery。

  • 一个 Git 仓库地址,例如: git://github.com/someone/some-package.git

  • 一个本地的 Git 目录

  • github 的别名,例如:someone/some-package (defaults to GitHub)。

  • 一个文件 url,包括 zip 和t ar.gz 文件。

举例来看一下来如何使用 bower 安装 jQuery,在你想要安装该包的地方创建一个新的文件夹,键入如下命令:

$ bower install jquery

上述命令完成以后,你会在你刚才创建的目录下看到一个 bower_components 的文件夹,其中目录如下:

$ tree bower_components/ bower_components └── jquery     ├── MIT-LICENSE.txt     ├── bower.json     ├── dist     │   ├── jquery.js     │   ├── jquery.min.js     │   └── jquery.min.map     └── src         ├── ajax         │   ├── jsonp.js         │   ├── load.js         │   ├── parseJSON.js         │   ├── parseXML.js         │   ├── script.js         │   ├── var         │   │   ├── nonce.js         │   │   └── rquery.js         │   └── xhr.js         ├── ajax.js         ├── attributes         │   ├── attr.js         │   ├── classes.js         │   ├── prop.js         │   ├── support.js         │   └── val.js         ├── attributes.js         ├── callbacks.js         ├── core         │   ├── access.js         │   ├── init.js         │   ├── parseHTML.js         │   ├── ready.js         │   └── var         │       └── rsingleTag.js         ├── core.js         ├── css         │   ├── addGetHookIf.js         │   ├── curCSS.js         │   ├── defaultDisplay.js         │   ├── hiddenVisibleSelectors.js         │   ├── support.js         │   ├── swap.js         │   └── var         │       ├── cssExpand.js         │       ├── getStyles.js         │       ├── isHidden.js         │       ├── rmargin.js         │       └── rnumnonpx.js         ├── css.js         ├── data         │   ├── Data.js         │   ├── accepts.js         │   └── var         │       ├── data_priv.js         │       └── data_user.js         ├── data.js         ├── deferred.js         ├── deprecated.js         ├── dimensions.js         ├── effects         │   ├── Tween.js         │   └── animatedSelector.js         ├── effects.js         ├── event         │   ├── alias.js         │   └── support.js         ├── event.js         ├── exports         │   ├── amd.js         │   └── global.js         ├── intro.js         ├── jquery.js         ├── manipulation         │   ├── _evalUrl.js         │   ├── support.js         │   └── var         │       └── rcheckableType.js         ├── manipulation.js         ├── offset.js         ├── outro.js         ├── queue         │   └── delay.js         ├── queue.js         ├── selector-native.js         ├── selector-sizzle.js         ├── selector.js         ├── serialize.js         ├── sizzle         │   └── dist         │       ├── sizzle.js         │       ├── sizzle.min.js         │       └── sizzle.min.map         ├── traversing         │   ├── findFilter.js         │   └── var         │       └── rneedsContext.js         ├── traversing.js         ├── var         │   ├── arr.js         │   ├── class2type.js         │   ├── concat.js         │   ├── hasOwn.js         │   ├── indexOf.js         │   ├── pnum.js         │   ├── push.js         │   ├── rnotwhite.js         │   ├── slice.js         │   ├── strundefined.js         │   ├── support.js         │   └── toString.js         └── wrap.js 23 directories, 88 files

包的使用

现在就可以在应用程序中使用 jQuery 包了,在 jQuery 里创建一个简单的 html5 文件:

       Learning bower    
  
 
     $(document).ready(function(){         $("button").click(function(){             $("div").animate({left:'250px'});         });     });   

正如你所看到的,你刚刚引用 jquery.min.js 文件,现阶段完成。

查看安装的包

执行以下命令可以列出所有本地安装的包。

$ bower list

查找包

查找bower注册的包:

$ bower search [
]

只需执行 bower search 命令即可列出所有已经注册的包。

包的信息

如果你想看到关于特定的包的信息,可以使用 info 命令来查看该包的所有信息:

$ bower info jquery bower cached        git://github.com/jquery/jquery.git#2.1.1 bower validate      2.1.1 against git://github.com/jquery/jquery.git#* {   name: 'jquery',   version: '2.1.1',   main: 'dist/jquery.js',   license: 'MIT',   ignore: [     '**/.*',     'build',     'speed',     'test',     '*.md',     'AUTHORS.txt',     'Gruntfile.js',     'package.json'   ],   devDependencies: {     sizzle: '1.10.19',     requirejs: '2.1.10',     qunit: '1.14.0',     sinon: '1.8.1'   },   keywords: [     'jquery',     'javascript',     'library'   ],   homepage: 'https://github.com/jquery/jquery' } Available versions:   - 2.1.1   - 2.1.1-rc2   - 2.1.1-rc1

注册包

可以注册自己的包,这样其他人也可以使用了:

$ bower register project git://github.com/yourname/project

包的卸载

卸载包可以使用 uninstall 命令:

$ bower uninstall jquery

配置文件

每个包应该有一个配置文件,描述包的信息,jquery 的配置文件为 bower.json。

{   "name": "jquery",   "version": "2.1.1",   "main": "dist/jquery.js",   "license": "MIT",   "ignore": [     "**/.*",     "build",     "speed",     "test",     "*.md",     "AUTHORS.txt",     "Gruntfile.js",     "package.json"   ],   "devDependencies": {     "sizzle": "1.10.19",     "requirejs": "2.1.10",     "qunit": "1.14.0",     "sinon": "1.8.1"   },   "keywords": [     "jquery",     "javascript",     "library"   ] }

name 和 version 描述包的名称和版本,dependencies 描述这个包依赖的其他包。main 指定包中的静态文件,可以为一个数组。license 指定版权协议,ignore 指定忽略哪些文件,devDependencies 指定依赖,keywords 描述该包的关键字。

除了包的配置文件,Bower 有一个项目的配置文件 .bowerrc ,存在于当期项目目录下,和 bower.json 文件同级,该文件内容如下:

{   "directory": "src/main/resources/static/libs",   "json": "bower.json" }

参数说明:

  • directory:配置下载的依赖存放路径,默认为 bower_components

  • json:保存项目依赖的文件名称,默认为 bower.json

更多的配置参数,需要查验官方文档,这里暂时不做补充。

类似的,你可以配置一个全局的配置文件 ~/.bowerrc,位于用户根目录下面。

项目中使用

bower.json 文件的使用可以让包的安装更容易,你可以在应用程序的根目录下创建一个名为 bower.json 的文件,并定义它的依赖关系。使用 bower init命令来创建 bower.json 文件:

[?] name: blog [?] version: 0.0.0 [?] description:  [?] main file:  [?] what types of modules does this package expose?  [?] keywords:  [?] authors: javachen 
 [?] license: MIT [?] homepage:  [?] would you like to mark this package as private which prevents it from being accidentally published to the registry? No accidentally published to the registry? (y/N)  {   name: 'blog',   version: '0.0.0',   authors: [     'javachen 
'   ],   license: 'MIT',   ignore: [     '**/.*',     'node_modules',     'bower_components',     'test',     'tests'   ],   dependencies: {     jquery: '~2.1.1'   } } [?] Looks good? Yes

注意看,它已经加入了 jQuery 依赖关系。

现在假设也想用 twitter bootstrap,我们可以用下面的命令安装 twitter bootstrap 并更新 bower.json文件:

$ bower install bootstrap --save

它会自动安装最新版本的 bootstrap 并更新 bower.json 文件:

{   name: 'blog',   version: '0.0.0',   authors: [     'javachen 
'   ],   license: 'MIT',   ignore: [     '**/.*',     'node_modules',     'bower_components',     'test',     'tests'   ],   dependencies: {     jquery: '~2.1.1',     bootstrap: '~3.0.0'   } }

如果想查看有哪些包和文件,可执行 bower list --path。比如安装了 jquery,可以看到以下信息:

{   "jquery": "bower_components/jquery/dist/jquery.js" }

现在就可以使用了,在当前目录建一个页面,script 嵌入需要的 js。

4. 总结

Bower 类似 maven 用于管理 javascript 的版本及其依赖,使用非常简单。

5. 参考文章

----EOF----- 

转载于:https://my.oschina.net/wjj328938669/blog/401799

你可能感兴趣的文章
PostgreSQL cheatSheet
查看>>
ASP.NET Core 2 学习笔记(三)中间件
查看>>
转:Mosquitto用户认证配置
查看>>
SpringBoot上传文件到本服务器 目录与jar包同级
查看>>
python开发_difflib字符串比较
查看>>
被解放的姜戈01 初试天涯
查看>>
三极管工作区在Spectre中的表示
查看>>
HT for Web的HTML5树组件延迟加载技术实现
查看>>
ASP.NET MVC 3 Razor Nested foreach with if statements
查看>>
【Mysql】命令行
查看>>
Asterisk 安装与配置
查看>>
利用日志记录所有LINQ的增,删,改解决方案
查看>>
实例讲解PostSharp(一)
查看>>
graylog 客户端的安装配置
查看>>
CentOS6.4_X86_64 安装Drupal-7.31必须成功版!
查看>>
驱动学习之驱动和应用的接口
查看>>
hbase region split源码分析
查看>>
MySQL备份之分库分表备份脚本
查看>>
Java 与 Netty 实现高性能高并发
查看>>
SurfControl人工智能新突破 领跑反垃圾邮件
查看>>