NodeJs初探索
练习1:模块之间的引用
a.js
// 引入b.js模块 var b = require("./b"); // 调用对象里的方法: 对象.属性名 对象.方法名() b.add(); b.del();
b.js
function add() { console.log("this is add"); } function del() { console.log("this is del"); } // 导出成员 exports.add = add; exports.del = del;
练习2:官方模块的使用,官方网址http://nodejs.cn/api/,获取系统信息,创建写入读取文件,http模块
/* * @Author: 一届书生 * @Date: 2020-03-28 10:24:24 * @LastEditTime: 2020-04-01 10:24:14 */ /** * 练习1:获取系统信息 */ console.log("\n练习1:获取系统信息"); // 引入官方模块 var os = require("os"); //主要用来获取操作系统信息 var path = require("path"); //操作文件路径 var url = require("url"); // 解析URL模块 // 获取系统内存 字节 kb M G console.log("运存:", os.totalmem() / 1024 / 1024 / 1024); // 获取文件后缀 console.log("后缀名:", path.extname('"E:/图片/必应壁纸/pirRAsmqR.jpg"')); // 获取表单get提交参数 // console.log(url.parse("http://gaoying.cn?name=一届书生&age=23", true)); var urlObj = url.parse("http://gaoying.cn?name=一届书生&age=23", true); console.log("url信息:", urlObj.query.name, urlObj.query.age); /** * 练习2:创建文件、写入文件 */ console.log("\n练习2:创建文件、写入文件"); // 1.引入官方的fs模块 var fs = require("fs"); // 2.调用成员writerFile创建文件 参数:路径,写入的内容,回调函数 fs.writeFile("./a.txt", "你好Nodejs", function(err) { // err有数据则写入失败 // err没数据则写入成功 if (err) { console.log(err); return; } console.log("创建成功"); }); /** * 练习3:读取文件 */ // 1.引入官方的fs模块 var fs1 = require("fs"); // 2.调用fs模块的成员 readFile 来读取a.txt 参数:路径,回调函数(两个参数) // fs1.readFile("./a.txt",function(err, data) { //没有指定编码 fs1.readFile("./a.txt", "utf8", function(err, data) { // err为真则读取失败,例如没有此文件 if (err) { console.log(err); return; } console.log("\n练习3:读取文件"); console.log(data); }); /** * 练习4:http模块 */ console.log("\n 练习4:http模块"); // 1.引入http模块 var http = require("http"); // 2.创建web服务器对象 var sever = http.createServer(); // 3.监听请求->响应内容 sever.on("request", function(request, response) { console.log("接收到了用户请求"); // response是一个对象,end方法用来响应用户数据 ctrl+c结束运行,需要重启服务 response.end("hello,NodeJs"); }); // 4.启动服务 sever.listen(8080, function() { console.log("服务器启动成功!通过:http://localhost:8080"); });
练习3:HTTP模块响应不同的数据
/* * @Qusetion: * @Author: 一届书生 * @Date: 2020-04-01 10:24:07 * @LastEditTime: 2020-04-01 13:28:53 */ /** * 练习5:http模块-响应不同的数据 */ console.log("\n 练习5:http模块"); // 1.引入http模块 var http = require("http"); var fs = require("fs"); var msgs = [ { name: "张三", age: "1", content: "金" }, { name: "李四", age: "2", content: "银" }, { name: "王五", age: "3", content: "铜" } ]; // 2.创建web服务器对象 var sever = http.createServer(); // 3.监听请求->响应内容 sever.on("request", function(request, response) { // 需求:登录页响应this is login 首页响应login.html console.log(request.url); //获取用户请求路径 if (request.url == "/") { // 首页 response.end("this is index"); } else if (request.url == "/login") { // 登录页 (fs模块) fs.readFile("./login.html", "utf8", function(err, data) { if (err) { console.log(err); return; } else { // 防止中文乱码,设置请求头 response.setHeader("content-type", "text/html;charset=utf-8"); response.end(data); } }); } else if (request.url == "/live") { // 动态列表 fs.readFile("./live.html", "utf8", function(err, data) { if (err) { console.log(err); return; } else { // 需求,里边的列表动态化 // 1.将上边的变量数据 组装html var html = ""; msgs.forEach(function(item) { // console.log(item); html += `${item.name} ${item.age} ${item.content} <br /> `; }); // console.log(html); // 2.将拼接好的数据 替换 原先静态页面的数据 var html = data.replace("待替换数据", html); // 防止中文乱码,设置请求头 response.setHeader("content-type", "text/html;charset=utf-8"); // 3.响应替换后的数据 response.end(html); } }); } else { // 防止中文乱码,设置请求头 response.setHeader("content-type", "text/html;charset=utf-8"); response.end("<a href='https://www.cnblogs.com/52dxer/'>一届书生 </a>"); } }); // 4.启动服务 sever.listen(8080, function() { console.log("服务器启动成功!通过:http://localhost:8080"); });