博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bower程序包管理器与npm的对比及handlebars包的使用实例
阅读量:4617 次
发布时间:2019-06-09

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

1、bower: 专门为前端表现设计的程序包管理器,类似npm,主要用于前端优化。bower可以管理包含HTML,CSS,JavaScript,字体甚至是图像文件的组成部分。bower并没有做别的事 - 它仅仅安装你需要的包及其依赖的正确版本。

2、**依赖node环境,window用户必须安装git工具。安装和升级bower必须用npm。

3、npm 和bower 的最大区别,就是 npm 支持嵌套地依赖管理(),而 bower只能支持扁平的依赖(嵌套的依赖,由程序员自己解决)。

**npm与bower的区别。

   1.npm不能共享多个包共同依赖的包,每个包都会下载自己依赖的包。bower对于共享包只会下载一次。

   2. npm主要运用于npm.js项目的内部依赖包管理,安装的模块位于项目根目录下的node_modules文件夹内。而bower大部分情况下用于前端开发,对于CSS/JS/模板等内容进行依赖管理,依赖的下载目录结构可以自定义。

       实际项目中,可以采用npm作用于后端;bower作用于前端的组合使用模式

4、bower提供清单文件跟踪程序包,便于查阅包的版本、依赖情况。bower提供api和编程api,可在git bash、cmd或js中对包进行安装、卸载、更新、删除、发布等操作。

5、bower提供的api

bower install jquery:安装jquery库。

bower cache clean:安装失败后,清除缓存

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

6、bower提供的程序api---提供了可以操作的bower. commands 对象。

var bower = require('bower');

 

bower.commands

.install(['jquery'], { save: true }, { /* custom config */ })

.on('end', function (installed) {

    console.log(installed);

});

 

bower.commands

.search('jquery', {})

.on('end', function (results) {

    console.log(results);

});

7、bower中配置文件.bowerrc

   {

  "directory" : "components",

  "json"      : "bower.json",

  "endpoint"  : "https://Bower.herokuapp.com",

  "searchpath"  : "",

  "shorthand_resolver" : ""

}

  • directory:存放库文件的子目录名。
  • json:描述各个库的json文件名。
  • endpoint:在线索引的网址,用来搜索各种库。
  • searchpath:一个数组,储存备选的在线索引网址。如果某个库在endpoint中找不到,则继续搜索该属性指定的网址,通常用于放置某些不公开的库。
  • shorthand_resolver:定义各个库名称简写形式。

8、handlebars包的使用。

html代码:

<!DOCTYPE HTML>

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Handlebars demo</title>

    <script type="text/javascript" src="../bower_components/jquery/dist/jquery.min.js"></script>

    <script type="text/javascript" src="../bower_components/handlebars/handlebars.min.js"></script>

    <script type="text/javascript" src="../javascript/myjs.js"></script>

    <style type="text/css"></style>

</head>

<body>

    <h2>Simple handlebars demo</h2>

    <button id="btn_simple">Click me</button>

    <div id="my_div">

    </div>

    <h2>Handlebars Helpers demo</h2>

    <button id="btn_helper">Click me</button>

    <div id="helper_div">

    </div>

    <script id="some-template" type="text/x-handlebars-template">

        <table>

            <thead>

                <tr>

                    <th>Username</th>

                    <th>Real Name</th>

                    <th>Email</th>

                </tr>

            </thead>

            <tbody>

                {

{
#if users}}

                <tr>

                    <td>{

{
username}}</td>

                    <td>{

{
firstName}} {
{
lastName}}</td>

                    <td>{

{
email}}</td>

                </tr>

                {

{
else}}

                <tr>

                    <td colspan="3">NO users!</td>

                </tr>

                {

{
/if}}

            </tbody>

        </table>

    </script>

    <script id="helper-template" type="text/x-handlebars-template">

        <div>

            <h1>By {

{
fullName author}}</h1>

            <div>{

{
body}}</div>

            <h1>Comments</h1>

            {

{
#each comments}}

            <h2>By {

{
fullName author}}</h2>

            <div>{

{
body}}</div>

                {

{
/each}}

        </div>

    </script>

</body>

</html>

js代码:

$(document).ready(function () {

    Handlebars.registerHelper('fullName', function (person) {

        return person.firstName + " " + person.lastName;

    });

    $("#btn_simple").click(function () {

        // $(this).hide();

        showTemplate();

    });

    $("#btn_helper").click(function () {

 

        showHowUseHelper();

    });

});

// var context = {title: "My New Post", body: "This is my first post!"};

var persion = { title: "My New Post", body: "This is my first post!" }

function showTemplate() {

    var source = $("#some-template").html();

    var template = Handlebars.compile(source);

    var data = {

        users: [

            { username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" },

            { username: "allison", firstName: "Allison", lastName: "House", email: "allison@test.com" },

            { username: "ryan", firstName: "Ryan", lastName: "Carson", email: "ryan@test.com" }

        ]

    };

    $("#my_div").html(template(data));;

}

 

function showHowUseHelper() {

    var context = {

        author: { firstName: "Alan", lastName: "Johnson" },

        body: "I Love Handlebars",

        comments: [{

            author: { firstName: "Yehuda", lastName: "Katz" },

            body: "Me too!"

        }]

    };

    var source = $("#helper-template").html();

    var template = Handlebars.compile(source);

    $("#helper_div").html(template(context));;

 

}

   

转载于:https://www.cnblogs.com/yyhuqd/p/5900871.html

你可能感兴趣的文章
测试开发学习进阶教程 视频&PDF
查看>>
C#基础-连接Access与SQL Server
查看>>
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>
Restful levels
查看>>
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
Spring重温(四)--Spring自动组件扫描
查看>>
Android设计图(标注、切图)
查看>>
strstr and strpos
查看>>
hash算法与拉链法解决冲突
查看>>
如何使用jQuery判断一个元素是否存在
查看>>
HTML5中的Canvas(颜色)【转载】
查看>>
420. Strong Password Checker
查看>>