node.js 和 express 框架学习笔记(2)

二. 正式上手Node.js

1. 安装和配置

其实一个很无奈的现象是,很多人在学习一门新技术的时候,常常在安装配置这里就跪了,嗯,我也是。

现在回过头来看node的安装配置其实无比简单,但愿大家不会踩到太多的坑……那么正式开始吧。

首先是node的安装包。在上一篇里我列出了node的中文官网,自行选择版本下载即可,安装包是msi的,直接运行安装,这一步应该没有什么好说的。现在的node.js安装包会将npm一并安装上,省心了。

关于npm是什么,简单来讲,由于node是模块化的(参考教程1说明),我们写项目的时候需要手动引入模块,如果是手动下载然后编辑依赖配置文件的话就太麻烦了,因而,node提供了npm,可以很方便的实现对模块的一键下载安装配置(还是参考教程1)。

踩坑1:并不需要配置任何环境变量,也请勿按照任何教程里的方式进行配置修改,否则后果自负。另,如果按照某教程里修改了npm的配置文件,然后惊喜的发现npm挂了连重装node都救不回来的时候,请前往 "C:\用户\你的用户名" 这个目录下删除 .npmrc文件。

现在来谈标题里的express,这玩意是node官方推荐的后端框架,拿来写网站是绰绰有余的,比较轻量级,功能也够用,算是官方认可的标配框架吧。怎么安装呢?先来看看npm的命令:

npm -v	//查看npm版本
npm install 模块名 [-g] [--save]	//安装指定模块到当前目录下的 node_modules目录下,仅用于当前目录对应的项目;如果指定了 -g 选项,将安装到全局,可以被所有项目直接使用;--save之后再说。
npm uninstall 模块名 [-g]	//和install类似,只是变成了卸载操作

以上三个命令就够用了,现在执行

npm install express -g
npm install express-generator -g

第一个命令是安装express框架本体,第二个命令安装express框架生成器,这个用于一键生成使用express框架的项目,用法:

express 项目名
会在当前目录下生成指定名称的express项目。这个同样之后说。

2. 第一个node项目

传统的JavaScript都是跑在浏览器里面的,而node的js,和Java/C#之类的源代码一样,可以直接被node core执行。

随便指定一个文件夹作为我们的项目文件夹,在里面创建 server.js,写入以下代码:

var http = require('http');//引入http组件
//下面的createServer传入了一个函数作为回调,当接收到http请求的时候被调用
http.createServer(function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'});//发送 HTTP 头部,HTTP 状态值: 200
	response.write('Hello World\n'');//写入响应数据
	response.end();//发送响应
}).listen(8888);//监听8888端口

// 终端打印如下信息
console.log('Server running at http://localhost:8888/');

然后执行命令 node server.js,就能看到打印出来的信息了,此时在浏览器里输入 http://localhost:8888 就能看到一个写着hello world的网页。

基本流程就是这样,注释已经够清楚了。好,现在你已经对node项目的启动和http的基本代码有所了解了,那么来看看node的模块系统。

3. 认识node的模块

由npm引入的模块和node内置的模块都是可以直接require的,像上面的实例那样,你可以把这个require理解为模块的公用构造函数,它返回模块的一个实例,然后你就可以调用模块的公共方法和变量了。自己怎么写模块呢?

第一种,一个简单的js脚本,只在自己的项目里使用,可以类比为其他语言里的类。当你写好这个模块时,需要指定(官方术语是导出)你需要暴露出来的方法和变量,像这样

function f(){
    console.log('This is a function');
}
exports.myfunction=f;//导出方法f。当然f也可以是变量,f也不必单独写出来,完全可以以匿名函数的形式和导出语句写到一块。

然后在别的js里,我们引入这个模块,假定上面这个模块的文件名是module.js,那么

var mymodule=require('./module.js');
mymodule.myfunction();
第一行导入模块, 注意要以 ./ 这样的路径导入,否则会被node认为是公共模块。顺带一提,全局安装的公共模块保存在npm默认的node_modules文件夹下,通常是 C:\用户\用户名\.AppData\Roaming\npm\node_modules,项目单独安装的公共模块保存在 项目文件夹下的node_modules里。

踩坑2:关于导出方法 exports,其实还有一个module.exports,两者的区别见这里

第二种,发布上传到npm服务器上,这个没有经验不胡诌,见这里


想想还有什么?应该没了,以上是node的基本特性,剩余的就是各个模块的使用和逻辑上的问题了,留到下一篇说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值