【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 node2.添加执行权限:chmod +x /home/user/bin/node-echo.js3.在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>:撤销发布果过的某个版本的代码
这些作为准备知识,接下来会继续学习
【nodejs学习】0.nodejs学习第一天的更多相关文章
- 七天学会NodeJS (原生NodeJS 学习资料 来自淘宝技术团队)
NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. ...
- Vue学习笔记-nodejs+vue-cli4+webpack按装配置+项目创建
一 使用环境: windows 7 64位操作系统 二 Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nodejs的官网下载 https: ...
- nodejs 开发,手把手开始第一个服务器程序(原生)
此文章为原生 nodejs ,仅做学习使用 想学习 express 和 koa2 的小伙伴请绕路 此文章适合有HTML 和css .js 基础的小伙伴看哦 如果能帮到你,荣幸之至 文章纯手打,如有纰 ...
- 从0开始学习 GitHub 系列汇总笔记
本文学习自Stromzhang, 原文地址请移步:从0开始学习 GitHub 系列汇总 我的笔记: 0x00 从0开始学习GitHub 系列之[初识GitHub] GitHub 影响力 a.全球顶级 ...
- 20145208 《Java程序设计》第0周学习总结
20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...
- emberjs学习一(环境和第一个例子)
code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...
- Bootstrap3.0入门学习系列
Bootstrap3.0入门学习系列规划[持续更新] 前言 首先在此多谢博友们在前几篇博文当中给与的支持和鼓励,以及在回复中提出的问题.意见和看法. 在此先声明一下,之前在下小菜所有的随笔文章中, ...
- 从0开始学习 GITHUB 系列之「向GITHUB 提交代码」【转】
本文转载自:http://stormzhang.com/github/2016/06/04/learn-github-from-zero4/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
- 从0开始学习 GITHUB 系列之「GIT 速成」【转】
本文转载自:http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
- 从0开始学习 GITHUB 系列之「加入 GITHUB」【转】
本文转载自:http://stormzhang.com/github/2016/05/26/learn-github-from-zero2/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
随机推荐
- mahout学习-1
一. 安装软件 需要安装如下文件: java, Eclipse, Maven,Hadoop,mahout 二. 推荐系统简介 每天,我们都会对一些事物表达自己的看法,喜欢,或不喜欢,或不在乎.这些都在 ...
- 多线程11-Semaphore信号灯
1.概念 Semaphore可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数 2.案例 package org ...
- nodejs学习记录
一.环境搭建 1.安装express 局部安装 npm i express 全局安装 npm i -g express (命令行express无法使用) 环境变量 npm i -g express-g ...
- po 和 mo 的互相转换
反编译 mo 文件成 po 文件 msgunfmt test.mo -o test.po 编码 po 文件为 mo 文件 msgfmt -o test.mo test.po 记着备用.
- C++实现Log()日志函数
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600649.html 需求:Log()函数,能够自动根据时间记录日志信息,要求不定参数类型和参数个数. 第一 ...
- ubuntu下怎么显示右上角的小键盘
Ubuntu右上角小键盘不见了解决方法: ibus输入法的图标经常消失,输入中文时很不方便,重启一下ibus! 按Ctrl+ALT+T 快捷键打开终端, 输入: 1.killall ibu ...
- echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍
今天花了一天的时间,用echart弄了一个效果,是从中国地图点进去身份并把改省份的数据渲染出来的效果,刚开始完全没有头绪,只能硬着头皮去看百度echart的api,和博客,看了半天,好家伙,终于给我找 ...
- Google Noto Sans CJK 字体
下载链接:https://code.google.com/p/noto/source/browse/third_party/noto_cjk 等自己安装完成,再来个体验说明.
- 完全教程 Aircrack-ng来PJ---WEP、WPA-PSK--加密利器
恩,先说明一下,本章的内容适用于目前市面所有主流品牌无线路由器或AP如Linksys.Dlink.TPLink.BelKin等.涉及内容包括了WEP加密及WPA-PSK加密的无线网络的破解操作实战. ...
- angularjs directive and component 指令与组件 ( 1.5.0 以后 )
之前写过一篇了 http://www.cnblogs.com/keatkeat/p/3903673.html 但某些部分写的不太清楚,甚至有点错误,所以今天特地在这里再来谈谈. 这篇主要是说指令的隔离 ...