-
文件读写fs
/*node对文件进行操作 引入fs(file-system)模块
* 在fs中 提供了所有的文件操作相关的API
*/
// 1. 使用require方法加载fs核心模块
var fs = require('fs');
/* 2. 读取文件
* 第一个参数:要读取的文件路径
* 第二个参数:回调函数
* 读取失败 error 是错误对象 data 是underfined
* 读取成功 error 是null data是数据
*/
fs.readFile('./hello.txt',function(error,data){
console.log(data.toString());
})
/* 3. 写文件
* 第一个参数: 要写入的文件路径
* 第二个参数: 要写入的文件内容
* 第三个参数:回调内容(只有error一个参数)
*/
fs.writeFile('./filewrite.txt','this is my first nodeJs.writetext',function(error){
console.log('success')
})
-
网络请求
/*
* 使用Node创建http服务器 使用核心模块:http
* 服务器的作用: 提供服务 对 数据的服务 发送请求 接收请求 处理请求 反馈(服务器发送响应)
*/
// 1. 加载http核心模块
var http = require('http')
// 2. 使用http.creatServer()方法创建一个web服务器,返回一个server实例
var server = http.createServer()
/*
* 3. 注册request请求事件 当客户端请求过来,就会自动触发服务器的request请求事件
* 需要接收两个参数
* request 请求对象 用来获取客户端的一些请求信息 例如请求路径(response.url)
* response 响应对象 用来给客户端发送响应消息
* response 中的write方法可以用来给客户端发送响应数据
* write 可以使用多次 但是最后一次一定要使用end结束 否则客户端会一直等待
*/
server.on('request',function(request,response){
console.log('收到客户端的请求了' + request.url)
// response.write('hello')
// response.end() //不推荐使用 一般使用 response.end
// response.end('hello nodeJS')
/*
* 根据不同的 请求路径 返回不同的响应结果
* 1. 获取客户端的请求路径: response.url 获取的是端口号之后的那一部分(即以 " / " 开头)
* 响应内容只能是 字符串 或者 二进制数据
*/
var url = request.url
console.log(url)
if(url ==='/'){
response.end('index')
}else if(url ==='/login')
{
response.end('login page')
}else{
response.end('404 not found')
}
})
// 4. 绑定端口号 启动服务器
server.listen(3000,function(){
console.log('服务器已经成功启动,可以通过http://localhost:3000/ 来进行访问')
})
-
require和exports
/* require 是一个方法 1.加载模块并执行其中的代码 2.获取被加载的文件模块exports的接口对象
* 每个文件模块的export默认为一个空对象
* node中, 模块分为: 具名的核心模块,如 fs,http 还有用户自定义的文件模块
* 使用require, 可以从外部引入其他js文件
* 相对路径: ./ 可以省略js后缀(默认require的是js文件)
* 在node中 没有全局作用域 只有模块作用域 外部和内部不能相互访问
*/
var result = require('./nodeExport01.js');
console.log(result) //result返回的就是require请求的js文件中exports中存储的对象
console.log((result.add(10,20))) //返回30
console.log(result.age) //返回23
//nodeExport01.js
var foo = 'aaa';
exports.foo = 'hello nodeJS';
exports.add = function(x,y){
return x + y
}
var age = 23;
exports.age = age;
端口:IP地址用来定位计算机 端口号用来定位具体的应用程序
-
content-type
- 在线查询工具:http://tool.oschina.net/
var http = require('http');
var server = http.createServer()
server.on('request', function(request, response) {
/*服务器默认使用utf8(国际标准)发送数据(编码)
* 但是浏览器不知道服务器使用的是utf8编码 在这种情况下 浏览器会按照当前操作系统的默认编码去编译
* 而中文操作系统的默认编码是 gdk 所以会出现中文乱码
* 在http协议中 Content-Type用来告诉对方 服务器发送的数据类型是什么
* text/plain 普通文本
*/
if (request.url === '/plain') {
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
response.end('今天是学习nodeJS的第一天')
}else if(request.url ==='/html')
{
//不设置header 默认以html格式解析 返回hello html
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
response.end('<p>hello html</p>') //按照字符串解析 返回<p>hello html</p>
}
})
server.listen(3000, function() {
console.log('server is running...')
})
http和fs结合,发送文件中的数据
var http = require('http')
var fs = require('fs')
var server = http.createServer()
server.on('request', function(request, response) {
if (request.url === '/') {
fs.readFile('./index01.html', function(error, data) {
if (error) {
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
response.end('文件读取失败!')
} else {
response.setHeader('Content-Type', 'text/html;charset=utf-8')
response.end(data)
}
})
} else if (request.url === '/image') {
fs.readFile('./img.jpg', function(error, data) {
if (error) {
response.setHeader('Content-Type', 'text/plain;charset=utf-8')
response.end('文件读取失败!')
} else {
response.setHeader('Content-Type', 'image/jpeg;')//图片不需要指定编码
response.end(data)
}
})
}
})
server.listen(3000, function() {
console.log('server is running...')
})
-
JavaScript Standard Style (http://standardjs.com/) 代码编写规范
还有 airbnb javascript style
无分号代码风格,要注意以下情况: 当一行代码是以 "(" 或者 "[" 或者 "反引号" 开头的时候,要在该行的前面加分号以免出现解析错误
所以有些第三方代码一开头就是;
注:node和npm环境变量配置:
安装好node和npm之后,在NodeJS安装目录下新建 node_global (存放 -g 下载的全局第三方包)和 node_cache 两个文件夹
cmd 设置
npm config set prefix "E:\NodeJS\node_global"
npm config set cache "E:\NodeJS\node_cache"
-g 可以在 任意路径 下 安装
如:npm install nodemon -g 安装后 输入 nodemon -v 查看是否安装成功
环境变量配置:
在系统环境中: 新建 "NODE_PATH" 路径为:"E:\NodeJS\node_global\node_modules"
在用户变量的path中添加:"E:\NodeJS\node_global"
重新打开cmd 输入node 进入node环境
输入require('express')
测试node的全局路径是否都安装成功。