这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战
require的加载顺序
require加载文件是运行到该位置才加载,请看下面的一段代码
a.js
console.log('a开始执行了'); require('./b'); console.log('a 执行结束了'); 复制代码
b.js
console.log('b执行结束'); 复制代码
执行结果
Node中没有全局作用域只有模块作用域
请看下面的两端代码
a.js
var a = '777' console.log('a开始执行了'); require('./b'); console.log('a 执行结束了'); console.log('a的值是:',a); 复制代码
b.js
var a = '666' console.log('b执行结束'); 复制代码
执行结果
使用exports暴露模块
exports其实是一个空对象,我们相当于向这个空对象中添加元素,然后进行暴露。
a.js
const test = require('./b'); console.log(test.a); 复制代码
b.js
var a = '666' exports.a = a; 复制代码
node运行 a.js
响应中文编码
服务器直接返回中文,在浏览器上显示的是乱码,所以我们可以通过设置setHeader中的编码格式来解决这一问题。
server.on('request',(req,res) => { res.setHeader('Content-Type','text/plain; charset=utf-8'); res.end('Node,你好'); }) 复制代码
Content-Type有什么作用?
Content-Type就是用来告知对方发送的数据内容是什么类型的。下面我们将给出Content-Type的例子
例子:设置为普通文本类型(plain)与html类型的
server.on('request',(req,res) => { const url = req.url; if (url === '/plain') { res.setHeader('Content-Type','text/plain; charset=utf-8'); res.end('这是中文哦!'); } else if (url === '/html') { res.end('<h1>你好这是一级标题</h1'); } }) 复制代码
浏览器会默认将html的字符串解析为HTML代码,如果我们想要的不是HTML代码而是字符串,可以通过设置setHeader为text/plain;