为了账号安全,请及时绑定邮箱和手机立即绑定

nodejs学习,初次学习nodejs的一些见解

标签:
Node.js

nodejs笔记(部分内容参考七天学会nodejs)
一,模块
1.基本上是分模块进行的,比如将每一个功能拆分到每一个模块中,然后分别调用。
2.其中模块一般是有这些变量:require、exports、module。
3.require 函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。另外,模块名中的.js扩展名可以省略。相当于Java的import或者php的require。(注意,可以使用这个方式加载json信息)
4.exports 对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象。相当于public的方法,就是有些方法可以公布给外面使用.
5.module 对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。例如模块导出对象默认是一个普通对象,如果想改成一个函数的话,可以使用以下方式。
module.exports = function () {
console.log('Hello World!');
};
6.模块的初始化:一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。
7.主模块:通过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。类似于网站的主要入口,一般可以定义为main.js或者index.js等。

示例:
目录结构:
/home/user/hello/

  • util/
    counter.js
    main.js
    其中counter.js内容
    var i = 0;
    function count() {
    return ++i;
    }
    exports.count = count;//发布count方法
    主模块main.js内容
    var counter1 = require('./util/counter');
    var counter2 = require('./util/counter');
    console.log(counter1.count());
    console.log(counter2.count());
    console.log(counter2.count());
    运行该程序的结果
    $ node main.js
    1
    2
    3
    //得出结论,counter并没有多次调用

二. 代码组织和部署
1.模块路径的解析规则:
require路径规则:一般情况下,为了避免强耦合,可以采用下面的几种形式进行传递路径。
1.内置模块,就是如果调用的是nodejs内置模块名称,可以直接使用模块名称作为传入值,比如require('fs')
2.node_modules目录,即nodejs定义了一个特殊的目录用来存放模版块,在该目录下可以直接用文件夹名加模块名就可以使用了,比如:调用require('foo/bar'),则nodejs依次调用的是:/同级目录/node_modules/foo/bar->/父级目录/node_modules/foo/bar->/node_modules/foo/bar。
3.NODE_PATH环境变量,与PATH环境变量类似,NodeJS允许通过NODE_PATH环境变量来指定额外的模块搜索路径。NODE_PATH环境变量中包含一到多个目录路径,路径之间在Linux下使用:分隔,在Windows下使用;分隔。比如:定义了以下NODE_PATH环境变量:NODE_PATH=/home/user/lib:/home/lib,当使用require('foo/bar')的方式加载模块时,则NodeJS依次尝试以下路径。 /home/user/lib/foo/bar-> /home/lib/foo/bar。

2.包:所有的子模块,即nodejs程序是由很多个js模块组成的,然而有些时候我们需要的模块是有多个子模块组成,这个时候可以用包的概念进行对这些子模块进行管理。
1.需要有一个入口,即该入口的导出对象作为包的导出对象(exports)。
2.示例:
包的结构:

  • /home/user/lib/
    • cat/
      head.js
      body.js
      main.js
      其中main.js为主要的入口,如下:
      var head = require('./head');
      var body = require('./body');
      exports.create = function (name) {
      return {
      name: name,
      head: head.create(),
      body: body.create()
      };
      };
      这个时候可以用require('/home/user/lib/cat/main')去调用他,如果将main命名为index.js,既可以用这样的语句进行调用var cat = require('/home/user/lib/cat');如果不想命名index,但是又不想写入口模块,这个时候可以改变结构,如下
  • /home/user/lib/

    • cat/
      • doc/
      • lib/
        head.js
        body.js
        main.js
      • tests/
        package.json
        其中主要作用在于package.json文件里面,可以设置
        {
        "name": "cat",
        "main": "./lib/main.js"
        }
        便可不用写入口模块名称了。

    3.命令行程序:
    nodejs写东西一般就是写包或者命令行,其实写包的目的就是更好的写命令行程序,所以我们可以写点脚本让我们写的包像命令行。
    在Windows系统下的做法完全不同,我们得靠.cmd文件来解决问题。假设node-echo.js存放在C:\Users\user\bin目录,并且该目录已经添加到PATH环境变量里了。接下来需要在该目录下新建一个名为node-echo.cmd的文件,文件内容如下:
    @node "C:\User\user\bin\node-echo.js" %*
    这样处理后,我们就可以在任何目录下使用node-echo命令了。

    4.npm的作用:
    1.允许用户从NPM服务器下载别人编写的三方包到本地使用。
    2.允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
    3.允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
    4.常用命令:
    1.下载第三方包:在工程目录文件夹下,使用该命令
    npm install 名字
    npm install 名字@版本号
    2.使用package.json进行声明第三方包依赖,写法如下:
    {
    "name": "node-echo",
    "main": "./lib/echo.js",
    "dependencies": {
    "argv": "0.0.2"
    }
    }
    3.发布代码:在package.json文件中需要定义该字段
    {
    "name": "node-echo", # 包名,在NPM服务器上须要保持唯一
    "version": "1.0.0", # 当前版本号
    "dependencies": { # 三方包依赖,需要指定包名和版本号
    "argv": "0.0.2"
    },
    "main": "./lib/echo.js", # 入口模块位置
    "bin" : {
    "node-echo": "./bin/node-echo" # 命令行程序名和主模块位置
    }
    }
    然后使用npm publish进行发布,当然,之前还需要有帐号,即用npm adduser进行登录。
    4.版本号规则:X.Y.Z分别代表主版本号、次版本号和补丁版本号。原则如下:
    如果只是修复bug,需要更新Z位。
    如果是新增了功能,但是向下兼容,需要更新Y位。
    如果有大变动,向下不兼容,需要更新X位。
    5.其他命令:
    1.NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
    2.使用npm help可查看某条命令的详细帮助,例如npm help install。
    3.在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。
    4.使用npm update可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。
    5.使用npm update -g可以把全局安装的对应命令行程序更新至最新版。
    6.使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
    7.使用npm unpublish @可以撤销发布自己发布过的某个版本代码。

(注:(打个小广告,小编别删,谢谢)楼主独自开发的app已经上线了,可以直接在网页应用宝或者百度手机助手搜索下载:面试圈,或者点击该链接面试圈,如果对这个app感兴趣的,可以联系楼主,与楼主一起开发!当然,该app也是对于面临面试的同学来场不错的巩固!面试圈,不用搜的面试题!后续学了更多会陆续更新!)

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
33
获赞与收藏
1498

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消