模块化思路|学习笔记

简介: 快速学习模块化思路

开发者学堂课程【Node.js 入门与实战模块化思路】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8301


模块化思路


目录:

一、模块化思路

二、示例

三、代码模块化

 

一、模块化思路

让代码模范化:便于代码的使用开发和后期代码的维护

多人协作的条件:代码最好分开几个文件放置,最好每个功能一个文件,每个人负责一个功能修改哪个文件即可。

 

二、示例

// 1.读取 data.json 文件的数据

readNewsData(function(list) {

// 2.

// 在把新闻添加到 list 之前,为新闻增加一个id属性url0bj.query.id = list.length;

//向数组对象 list 中 push 一条新闻

list.push(url0bj.query);

// 3.写入 data.json 文件

writeNewsData(JS0N.stringify(list),function() {

//重定向

res.statusCode = 302;

res.statusMessage . 'Found';

res.setHeader('Location''/');

res.end();

});

});

} else if (reg.url *** '/add' && req.method ***'post') { 

// 1. 读取 data.json

readNwsData(function(list) {

// 2.读取用户 post 提交的数据

postBodyData(req,function(postData) {

// 3.为用户提交的新闻增加一个 id 属性,并且把新闻对象 push 到list中postData.id = list.length;

list.push(postData);


三、代码模块化

1、代码模块一

//1.加载 http 模块

//模块改造的核心思想就是把项目中按照功能模块,不同代码提取到不同JS文件中

//index.js 只负责启动服务,定义为模块一

var http = require('http');

var fs = require('fs');

var path = require('path');

var mime = require('mime');

var url = require('url');

var querystring =require('querystring');

var_ = require('underscore');

// 2.代码模块二

2.创建服务

//模块二对 res 和 req 进行扩展服务,为 req 和 res 增加以下更方便好用的 API

http.createServer(function(req,res) {

//要在这里写大量的代码

//为 res 对象添加一个 render() 函数,方便后续使用

//因为现在要渲染的 index.html 中需要用到模板数据,所以给render函数增加了第二个参数

//第二个参数的作用就是用来传递 html 页面中要使用的模板数据

res.render = function(filename,tpLData)//增加一个render函数就是为了后期使用方便,并且渲染时和特定业务无关,其他业务涉及渲染时也可以使用 render 函数.

{

fs.readFile(fllename, function(err,data) {

if (err) {

res.writeHead(404,'Not Found',{'Content-Type':'text/html;charset=utf-8' });

res.end('4B4,not found.');

return;

}

//如果用户传递了模板数据,那么就使用 underscore 的 template 方法进行替换“

//如果用户没有传递模板数据,那么就不进行替换

1f (tplData) {

//如果用户传递了模板数据,表示要进行模板

var fn = template(data.toString('utf8'));

data = fn(tp1Data);

}

res.setHeader('Content-Type',mime.getType(filename));

res.end(data);});

3.代码模块三

模块三路由判断

将用户请求的 url 和 method 转换为小写字母 req.url = req.url.toLowerCase();

req.method = req.method.toLowerCase();

通过 url 模块,调用 url.parse() 方法解析用户请求的 url (req.url)

var url0bj = url.parse(req.url,true)

//先根据用户请求的路径(路由),将对应的HTML页面显示出来

if  (req.url ·***·/’·req.url·***./index’·&&·req.method·***·get){

4. 代码模块四

模块四处理具体路由的业务的代码

//1.读取 data.json 文件中的数据,并将读取到的数据转换为list数组

readNewsData(function(list)){

//2.在服务器使用模板引擎,将 list 中的数据和 index.html 文件中的内容结合渲染给客户端

res.render(path.join(_ _dirname,views,index.html),{list:list});

});

} else if(req.url *** /submit&& req.method *** get){

//读取 submit.html 并返回

res.render(path.join(_ _dirname,views,submit.html));

}

else if (url0bj.pathname === /item&& req.method === get){

//1.获取当前用户请求的新闻的 id

//url0bj.query.id

//2.读取 data.json 文件中的数据,根据 id 找到对应新闻

}

}

相关文章
|
2月前
|
算法 测试技术
模块化设计具体应该怎么做呢
【10月更文挑战第22天】模块化设计具体应该怎么做呢
|
开发者
重构的核心-让代码保持整洁
很久之前团队师兄向我推荐了《重构:改善既有代码的设计》这本书,粗略翻阅看到很多重构的细节技巧,但当时还处于未接触过工程代码,只关注代码功能,不太考虑后期维护的阶段,读起来觉得枯燥无味,几乎没有共鸣,一直没有细细阅读。在工作一年后,终于在师兄的督促下,利用一个月左右的早起时光读完了这本书,收获很多,感谢师兄的督促,感谢这本书陪伴我找回了阅读习惯。把这本书推荐给已经接触了工程代码、工作一年左右的新同学,相信有了一定的经验积累,再结合日常项目实践中遇到的问题,对这本书的内容会有很多自己的思考感悟
40598 4
重构的核心-让代码保持整洁
|
前端开发
前端学习案例2-模块化2
前端学习案例2-模块化2
61 0
前端学习案例2-模块化2
|
前端开发
前端学习案例1-模块化1
前端学习案例1-模块化1
70 0
前端学习案例1-模块化1
|
Java
LanguageTool精简的两个思路
LanguageTool精简的两个思路
82 0
|
前端开发 JavaScript 开发者
前端技术-模块化概念说明 | 学习笔记
快速学习 前端技术-模块化概念说明
106 0
|
前端开发
前端也要学习基本的UI设计原则与实践套路
有的人可能说,我是技术研发人员,UI的事情我们团队内会有别的人去操心这个,我只管技术即可。 在一天之前,我也是这么觉得的,但是我前些日子听了字节的《给开发看的UI设计》这节课后,觉得一个前端工程师也是要具备一定的UI设计能力的。 依赖市面上的组件库已经不能让产品维持在好用的状态了,还需要将一些设计元素添加进去,才能让我们开发的作品,达到一个更好的层次,给与用户最好的体验。 你的团队可能没有UI同学,也可能有UI同学,但是不一定专业,他们经常会是外包人员,UI给出的设计稿通常只是静态文件,是某一交互切面的,很多的交互细节都体现不出来,在大厂中,许多的B端产品是没有专职UI角色的,前端可能要
|
Java C# C++
面向过程的程序的开发思路
面向过程的程序的开发思路
160 0
|
数据库
高质量代码优化!谈谈重构项目中if-else代码的几点建议
本篇文章探讨了代码的重构以及优化,主要针对代码中大量的条件判断if-else语句问题提出了具体的优化建议。介绍了优化if-else语句的几种有效的方法,包括switch,接口interface以及数据库实现对条件语句进行的优化。
182 0
高质量代码优化!谈谈重构项目中if-else代码的几点建议
|
缓存 负载均衡 NoSQL
系统重构 | 学习笔记
快速学习系统重构
435 0