【nodejs学习】0.nodejs学习第一天

1.模块

大一点的程序都需要模块化,nodejs也不例外,代码放到不同的文件中,每一个文件就可以是一个模块,文件路径名就是一个模块名。每个模块中包含三个预先定义的变量:

1.require:用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象,".js"可以省略。

eg:var fool1 = require(‘./foo‘);//.foo.js,/home/user/foo

var data = require(‘./data.json‘);//加载json文件

2.exports:当前模块导出对象,用于导出模块的共有方法和属性,其他模块通过require使用当前模块就是当前模块的exports对象。

eg:exports.hello = function(){

conscole.log(‘Hello World!‘);

}

3.model:可以访问当前模块的一些相关信息,最多的用途是替换当前的导出对象。如模块导出对象时一个普通的对象,如果改成一个函数的话,可以:

eg:module.exports = function(){

conscole.log(‘Hello World!‘);

}

2.模块初始化

一个模块中的js代码仅在第一次使用时执行一次,并在执行过程中初始化模块的导出对象,之后缓存起来的导出对象被重复利用。

3.主模块

用于启动程序,相当于C语言中的main函数

//counter.js

var i = 0;

function count(){

return i++;

}

exports.count = count;

//main.js

var counter1 = require(‘./counter.js‘);

var counter2 = require(‘./counter.js‘);

console.log(counter1.count());//0

console.log(counter2.count());//1

console.log(counter2.count());//2

$ node main.js

0

1

2

//?为什么不是1,2,3请自己思考,网上某些资料写的是1,2,3

4.模块路径解析规则

1.内置模块不做路径解析直接返回内部模块导出对象。eg:require(‘fs‘);//fs和http是内置对象

2.node_modules目录:这个特殊的目录用来存放模块,如某个模块的绝对路径是/home/user/hello.js,使用require(‘foo/bar‘)方式加载,则nodejs尝试:

/home/user/node_modules/foo/bar

/user/node_modules/foo/bar

/node_modules/foo/bar

3.NODE_PATH,在使用require(‘foo/bar‘)时,会一次加载NODE_PATH中的目录。

5.包

包内的文件放在一个目录中,包的所有子模块需要一个入口模块,入口模块的导出对象被作为包的导出对象。

如果模块的文件名为index.js,可以使用文件路径省略index使用模块,这样的话,就可以require一个包,更有整体感。

6.package.json

如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个package.json,并在其中指定入口模块的路径。

- /home/user/lib/
    - cat/
        + doc/
        - lib/
            head.js
            body.js
            main.js
        + tests/
        package.json
//package.json
{
    "name": "cat",
    "main": "./lib/main.js"
}
require(‘/home/user/lib/cat‘)方式可以加载模块
7.命令行程序
Linux
1.添加注释:#! /usr/bin/env node
2.添加执行权限:chmod +x /home/user/bin/node-echo.js
3.在path中指定路径:sudo ln –s /home/user/bin/node-echo.js /user/local/bin/node-echo
可以在任何目录下使用node-echo命令了
Windows
1.PATH中配置C:\Users\users\bin目录
2.在C:\Users\users\bin目录下新建node-echo.cmd文件,文件内容为:@node "C:\User\user\bin\node-echo.js" %*
可以在任何目录下使用node-echo命令了
8.工程目录
- /home/user/workspace/node-echo/   # 工程目录
    - bin/                          # 存放命令行相关代码
        node-echo
    + doc/                          # 存放文档
    - lib/                          # 存放API相关代码
        echo.js
    - node_modules/                 # 存放三方包
        + argv/
    + tests/                        # 存放测试用例
    package.json                    # 元数据文件
    README.md                       # 说明文件

其中部分文件

/* bin/node-echo */
var argv = require(‘argv‘),
    echo = require(‘../lib/echo‘);
console.log(echo(argv.join(‘ ‘)));

/* lib/echo.js */
module.exports = function (message) {
    return message;
};

/* package.json */
{
    "name": "node-echo",
    "main": "./lib/echo.js"
}
上面这些代码还不能执行,还没有完成,不要着急。
9.NPM
$ npm install argv
或者是在package.json中添加
"dependencies":{
    "argv":"0.0.2"
}
在工程目录下使用npm install命令批量安装三方包,以后node-echo也上传到服务器,别人下载这个包,会根据申明的第三方依赖自动下载进一步依赖的三方包,使用npm install node-echo命令,自动创建一下目录

附录:

1.npm adduser:新建用户

2.npm publish:发布代码

3.npm help:

npm help 命令名,打开html帮助

4.在package.json所在目录下,使用npm install . -g可在本地安装当前命令行程序,用于发布前测试

5.npm update <package>:更新模块

6.npm update <package> –g:全局更新

7.npm cache clear:清空NPM本地缓存

8.npm unpublish <package>@<version>:撤销发布果过的某个版本的代码

这些作为准备知识,接下来会继续学习

时间: 2024-08-07 03:50:12

【nodejs学习】0.nodejs学习第一天的相关文章

七天学会NodeJS (原生NodeJS 学习资料 来自淘宝技术团队)

NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台)

 0 前言 本文说明如果安装和使用node-coap.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议学习--CoAP基础] [CoAP学习笔记--CoAP资源发现] [CoAP学习笔记--服务器端繁忙时的处理请求流程] [树莓派学习笔记--webiopi安装与

CoAP学习笔记——nodeJS node-coap安装和使用(windows平台)

0 前言 本文尝试在windows平台中搭建基于nodeJS的CoAP Server. linux平台搭建和使用过程可参考--CoAP学习笔记--nodeJS node-coap安装和使用(Linux平台) [测试环境]--windows [相关博文] [CoAP协议学习--CoAP基础] [CoAP学习笔记--CoAP资源发现] [CoAP学习笔记--服务器端繁忙时的处理请求流程] [树莓派学习笔记--webiopi安装与入门]webiopi中集成了CoAP Server,可以方便地通过CoA

[转载]Nodejs学习路线图——nodejs系列

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的Geek网站!! 关于作者 张丹(Conan), 程序员Java,R,PHP,Java

20145209 《信息安全系统设计基础》第0周学习总结

20145209 <信息安全系统设计基础>第0周学习总结 教材学习内容总结 一.师生关系: 最好的师生关系是健身学员与健身教练的关系.这种关系的前提就是学员即学生必须以自己学习为前提,在学习的过程中接受老师的指导,才能真正提高和进步.老师安排任务只能更具大多数人的水平,并不能完全的更具 你自己的能力给你最好的学习模式,只有通过自己对自己的了解,探索出自己的学习方式,在此期间向老师提出疑问与不解才能真正的进步. 二.习而学的要点: 找到学习共同体:因为大量知识存在于学习共同体的实践中,不是书本中

20145317《信息安全系统设计基础》第0周学习总结

20145317彭垚<信息安全系统设计基础>第0周学习总结 感想: 学生和老师的关系:健身教练和健身学员.学员想要健身塑造好的身材却不知道路径和方法,所以找到教练,教练需要做的是引导教会学生正确的锻炼姿势和锻炼方法,之后的事情就全看学员自己了. 对于新学期新课程,我希望自己能比上次学的认真,比上学期效率高,然后积极配合老师的教学工作,同时也不断提高自己. 问题: 第一章 计算机系统漫游 计算机操作系统中处理器.缓存器.以及内存等在运行中是如何配合运行的. 第二章 信息的表示和处理 计算机算数运

20145311 《信息安全系统设计基础》第0周学习总结

20145311 <信息安全系统设计基础>第0周学习总结 本周对这学期将要学习的信息安全系统设计这门课程做了一个大概的了解,感觉这门课的学习方式应该和上学期的Java程序设计基础那门课差不多,主要还是要靠自己自学, 其实我感觉自学是一种挺有效的学习方法,但是我自己认为还没能利用好这种方式,比如上学期的java课就没怎么学好, 所以这学期应该需要有所改观,至少我主观上是这样认为的.但是我返现这本书<深入理解计算机系统v2>真的很厚,一周两章的进度不知道是否能够跟得上, 上学期一周两章

(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍

-- 星月相随倾心贡献~~~ -- 本章简单介绍一下:单一继承 -- 多继承本人还没有用过,主要是lua多继承感觉不好用~~~个人感觉~~~大汗~! -- example: local Base = class( "Base" ) Base.__index = Base function Base:ctor(...) print( self.__cname ) -- 输出:类名字.class( "xxx" ), self._cname 就是 xxx end func

【转载】从0开始学习 GITHUB 系列之「向GITHUB 提交代码」

转载自http://stormzhang.com 之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作,教你们向 GitHub 上提交你们的第一行代码! 1. SSH 你拥有了一个 GitHub 账号之后,就可以自由的 clone 或者下载其他项目,也可以创建自己的项目,但是你没法提交代码.仔细想想也知道,肯定不可能随意就能提交代码的,如果随意可以提