模块化思路|学习笔记

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

开发者学堂课程【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 找到对应新闻

}

}

相关文章
|
5月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
3月前
|
算法 测试技术
模块化设计具体应该怎么做呢
【10月更文挑战第22天】模块化设计具体应该怎么做呢
|
6月前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
171 0
|
前端开发
项目实战典型案例22——原型图的面向对象思路
项目实战典型案例22——原型图的面向对象思路
101 1
|
前端开发
项目实战22—原型图的复用思想
项目实战22—原型图的复用思想
86 0
|
前端开发
前端学习案例2-模块化2
前端学习案例2-模块化2
65 0
前端学习案例2-模块化2
|
前端开发
前端学习案例1-模块化1
前端学习案例1-模块化1
74 0
前端学习案例1-模块化1
|
前端开发 JavaScript NoSQL
DDD实战之二:看看代码结构长啥样
DDD实战之二:看看代码结构长啥样
DDD实战之二:看看代码结构长啥样
|
前端开发 JavaScript 开发者
前端技术-模块化概念说明 | 学习笔记
快速学习 前端技术-模块化概念说明
110 0
|
Java C# C++
面向过程的程序的开发思路
面向过程的程序的开发思路
172 0

热门文章

最新文章