步骤 2 : 测试读 步骤 3 : 测试写 步骤 4 : 模仿和排错 步骤 5 : 在路由的基础上进行开发 步骤 6 : 准备how2j.html 步骤 7 : 业务处理模块 requestHandlers.js 步骤 8 : 主模块 index.js 步骤 9 : 重启访问
老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
启动办法:
node index.js 访问测试地址: http://127.0.0.1:8088/readFile 可以看到如图所示的文字。 而这个文字,是从 how2j.html 文件里读取出来的。
访问测试地址
http://127.0.0.1:8088/writeFile 这会导致创建文件 how2java.html, 并且向其中写入文字。
在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。 采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。 推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。 这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来 这里提供了绿色安装和使用教程:diffmerge 下载和使用教程
因为前面学习了路由,现在正好实践一下,在路由教程的基础之上开发新的功能。
在 src 目录下 新建 how2j.html 文件,并在其中敲入如下文字
hello from how2j
hello from how2j
在 requestHandlers.js 中新增两个函数,分别是读和写
开头要引入 fs.js 表示使用文件模块 var fs = require("fs"); 读方法是 function readFile(){ var html = fs.readFileSync('how2j.html'); return html; } 写方法是: function writeFile(){ fs.writeFile('how2java.html', 'hello from how2java'); return "write successful"; } 标记这两个函数 exports.readFile = readFile; exports.writeFile = writeFile; 注: readFileSync 这个是同步读,一般nodejs会还是会使用异步读,不过为了使用异步读,需要打破当前路由代码的结构,为了不增加学习负担,就暂时用同步读来演示了吧,效果是一样的。 而且不是 大量的 I/O 操作, 也看不出同步读和异步读的区别。 var fs = require("fs");
function listCategory() {
return "a lot of categorys";
}
function listProduct() {
return "a lot of products";
}
function readFile(){
var html = fs.readFileSync('how2j.html');
return html;
}
function writeFile(){
fs.writeFile('how2java.html', 'hello from how2java');
return "write successful";
}
exports.listCategory = listCategory;
exports.listProduct = listProduct;
exports.readFile = readFile;
exports.writeFile = writeFile;
在主模块 index.js 中新增读写的映射:
handle["/readFile"] = requestHandlers.readFile; handle["/writeFile"] = requestHandlers.writeFile; var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");
var handle = {}
handle["/listCategory"] = requestHandlers.listCategory;
handle["/listProduct"] = requestHandlers.listProduct;
handle["/readFile"] = requestHandlers.readFile;
handle["/writeFile"] = requestHandlers.writeFile;
server.start(router.route, handle);
var server = require("./server"); var router = require("./router"); var requestHandlers = require("./requestHandlers"); var handle = {} handle["/listCategory"] = requestHandlers.listCategory; handle["/listProduct"] = requestHandlers.listProduct; handle["/readFile"] = requestHandlers.readFile; handle["/writeFile"] = requestHandlers.writeFile; server.start(router.route, handle);
重启后访问测试地址观察效果
http://127.0.0.1:8088/readFile http://127.0.0.1:8088/writeFile
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2022-11-15
writeFile 写操作,为何没对 how2j.html 的内容生效从而变更html内容呢?
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-01-15
出现了乱码问题
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-10-05
writeFile调用问题
2018-09-15
编者有个bug, writeFile后面还需添加第3个参数callback,否则报错
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|