zoukankan      html  css  js  c++  java
  • express-3 最佳实践

    版本控制###

    版本控制有以下益处:

    • 文档: 能够回溯项目的历史,回顾所做的决策及组件的开发顺序,可形成宝贵的文档。记录项目的历史是十分有价值的。
    • 归属: 团队工作,分工清晰,节省沟通成本。
    • 试验: 你可以引出一个分支,尝试做一些新的东西,不用担心会影响项目的稳定性。

    使用Git###

    • 初始化 git init**

    • 创建一个.gitignore文件**

    node_modules
    *~
    .DS_Store
    

    .gitignore文件中的条目也适用于子目录。

    • 添加修改 git add -A

    它添加的是修改,而不是文件。

    • 提交 git commit -m "Initial commit."

    npm包###

    永远不要修改node_modules目录中的任何代码; 如果想对项目所依赖的包进行修改,正确的做法应该是创建那个项目的副本。

    • package.json

    package.json文件有双重作用:描述项目和列出依赖项。

    {
        "dependencies": {
            "express": "^4.0.0",
            "express3-handlebars": "^0.5.0"
        }
    }
    

    包版本号之前的插入符(^),这表明在下一个主要版本号之前,所有以指定版本号开始的版本都能用。(4.0.0-4.9.9); 这是使用npm install --save时默认指定的版本范围,并且通常也很安全。

    如果你想了解npm中更多与版本有关的信息,可以翻阅一下semver的文档

    项目元数据###

    package.json文件的另一个作用便是存放项目的元数据。可以用npm init来初始化创建package.json文件。如果想把项目放到npm或Github上,则对元数据的要求会比较严格。
    想了解更多有关package.json中各个域的信息,请查阅package.json的文档

    另一个重要的元数据是README.md文件。这个文件很适合描述网站的整体架构,也适合于存放刚接触项目的人需要了解的重要信息。这个文件是用基于Markdown的文本维基格式写成的。
    更多信息请查阅Markdown文档

    Node模块###

    Node模块和npm包是两个相互关联但又彼此不同的概念。Node模块提供了一个模块化和封装的机制。npm包则提供了一种存储、版本化和引用项目(不限于模块)的标准范式。

    var express = require('express');
    

    require是一个用来引入模块的Node函数。Node默认会在目录node_modules中寻找这些模块。然而Node还提供了创建自有模块的机制(永远不要在node_modules中创建自己的模块)
    创建一个模块

    • 创建一个用来保存模块的目录,一般都称为lib;这个目录下创建一个fortune.js文件:
    var fortuneCookies = [
        "Conquer your fears or they will conquer you.", 
        "Rivers need springs.",
        "Do not fear what you don't know.",
        "You will have a pleasant surprise.", 
        "Whenever possible, keep it simple.",
    ];
    
    exports.getFortune = function() {
        var idx = Math.floor(Math.random() * fortuneCookies.length);
        return fortuneCookies[idx];
    };
    

    这里要特别注意全局变量输出的用法。如果你想让一个东西在模块外可见,必须把它加到exports上。在这个例子中,在模块外可以访问到函数getFortune,但数组fortuneCookies是完全隐藏起来的。

    • 在原来的meadowlark.js中移除fortuneCookies数组,并在顶部加上下面这行代码:
    var fortune = require('./lib/fortune.js');
    

    在模块名称前加了前缀./。这是告诉Node,它不应该到node_modules目录中查找这个模块,如果我们忽略了这个前缀就会导致失败。

    • 接下来在关于页面的路由中,利用以上模块里的getFortune方法:
    app.get('/about', function(req, res) {
        res.render('about', { fortune: fortune.getFortune() } );
    });
    

    了解更多信息,请参考Node模块的官方文档

  • 相关阅读:
    我的浏览器收藏夹分类
    我的浏览器收藏夹分类
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4279935.html
Copyright © 2011-2022 走看看