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模块的官方文档

  • 相关阅读:
    Goland在go mod vendor模式下无法识别某些库
    国际教育游戏实证研究综述:2008年-2012年
    ES6之用let,const和用var来声明变量的区别
    集成spring boot + mysql + docker实战
    js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
    小试牛刀之sort()排序的实现
    Redis字符串(STRING)中BIT相关命令
    koa,express,node 通用方法连接MySQL
    JavaScript预解释是一种毫无节操的机制
    [php]如何做到高并发优化
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4279935.html
Copyright © 2011-2022 走看看