node.js第十三课(工程的结构)

Node JS 基础知识:Node.js项目结构 那么我们应该在 models 文件夹中定义单独的模型文件并将它们导入到我们的服务文件(业务逻辑)中。在这种情况下,对于我们的 NodeJS 应用程序,这意味着给它一个合适的 Node JS 项目结构。将来,如果需要添加更多具有类似逻辑的文件,那么开发人员就会知道使用这个特定的文件夹。我们需要在整个项目中访问这些模块,它们应该在根目录中,而不是在子文件夹中,以便于访问。文件是强制性的,以保持项目的大小较小并提高安全性。相反,应该有一个单独的服务文件夹,其中包含包含重要和敏感业务逻辑的服务文件。 阅读详情

一、app.js 工程的入口
   分析代码:
   1.我们导入了express模块,前面我们通过npm install依赖上了,在这里就可以直接通过require获取、
   2.routes是一个文件夹形式的本地模块,即./routes/index.js,他的功能是为指定的路径组织返回内容,相对于mvc架构中的控制器。
   3.app.set是Express的参数设置工具,接受一个键(key)和一个值(value),可以用的参数如下:
      basepath:基础机制,通常用于res.redirect()跳转
      views:视图文件的目录,存放模版文件
      port:指定的端口
      view engine:视图模块引擎(推荐使用ejs)
      view options:全局视图参数对象
      view cache:启用视图缓存
      case sensitive routes:路径区分大小写
      strict routing:严格路径,启用后不会忽略路径末尾的"/"
      jsonp callback:开启透明的jsonp支持
    4.Express依赖于connect,connect更加短小精悍,是一个偏向基础设施的框架,提供了大量的中间件,可以通过app.use启用。
      中间件:一系列的组件连接到一起,然后让http的请求依次流过这些组件。这些被connect串联起来的组件被称为中间件
      app.configure中启用了五个中间件:
      bodyParser:解析客户端请求。
      router:项目的路由支持
      static:提供静态文件支持。
      methodOverride:函数重写
      errorHandler:错误控制器
    5.app.get('/',routes.index),是一个路由控制器,用户如果访问'/'路径,则routes.index来控制。
    6.通过express.createServer()函数创建一个应用的实例
 //引用模块
 var express = require('express'),
   routes = require('./routes'),
   user = require('./routes/user');
   http = require('http'),
   path = require('path');
 //实例化express对象
 var app = express();
 //配置app的参数和启用中间件
 app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname+'/views');
  app.set('view engine','ejs');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser()); 
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
 });
 
 //配置开发模式
 app.configure('development', function(){
  app.use(express.errorHandler()); 
 });
 
 //配置路由控制
 app.get('/',routes.index);
 app.get('/users',user.list);
 
 //配置服务并监听端口
 http.createServer(app).listen(app.get('port'),function(){
  console.log('Express server listening on port' + app.get('port')); 
 });
二、routes/index.js是路由文件,相当于控制器,用于组织展示的内容。
//index.js
exports.index = function(req, res){
  res.render('index', { title: 'octopus' });
};
    app.js中通过app.get('/',routes.index)将'/'路径映射到exports.index函数下,其中只有一个语句,
    res.render('index',{title:"octopus"}),功能是调用模版解析引擎,并传入一个对象作为参数,这个对象只有一个属性,即title
三、index.ejs模版文件,即routes.index.js中调用的模版。
//index.ejs
<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>

   它的基础是HTML语言,其中包含了<%=title%>的标签,功能是显示引用的变量。

   即res.render函数的第二个参数是第一个参数指定的路径下文件中引用的参数.

Node.js技术详解与前端工程化应用 阅读详情

相关推荐

深入掌握JavaScript Node.js开发

本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创...

weixin_28809949的博客 2139

NodeJS 简介:Node js 架构

为了使代码更易于其他人阅读和理解,我们必须在项目的每个部分使用注释。是软件的一种设计模式,其中软件的依赖关系作为参数传入,而不是包含它们或在软件内部创建依赖关系。过度使用或依赖这些模块是不好的,因为它可能会影响应用程序的安全性。如果主线程正忙于执行其他请求,那么每当它变得空闲时,主线程就会对后台线程的事件通知做出反应。使用 Node.js 创建的 Web 服务器的工作流涉及上一节中讨论的所有组件。,即 Node 包管理器,是一个包管理器,可用于轻松地在 Node.js 中安装所有第三方模块。

新华编程特战队 3517

大一Python之循环解决实际问题

pythin之循环解决实际问题

weixin_66263546的博客 2289

node.js express工程的结构

我们使用express生成了package.json,它只产生了javascript的app.js和routes/index.js。模版引擎ejs有文件index.ejs,此外还有样式表style.css。     12讲问题:创建工程时候一直使用jade。要求用ejs 一、app.js 工程的入口。         分析代码:             1.我们导入了express模块,前

Anonymous 898

Android System Slice应用加载分析,及启用Slice后,锁屏日期第一次开机正常显示,但后面锁屏不显示问题分析

最近发现Android P上锁屏界面,日期不显示,发现从P开始后,出现了Slice来允许应用以模块化,可交互的方式,插入多个使用场景。Android P的system UI 也使用到了这一特性,表现为锁屏时间,日期,勿扰图标,闹钟等。 如何使用Slice 以System UI中KeyguardSliceView.java来说明它的使用方法 首先,我们打开System UI 的mk 文件,可以看到以...

qq_33595823的博客 3036

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 535

【 NodeJS项目基础结构 】

https://wenku.baidu.com/view/a93953850329bd64783e0912a216147916117e43.html

u012632105的博客 530

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3686

NodeJS项目架构设计,看这一篇就足够了!

探讨了如何使用Node.js、Express和TypeScript构建现代API,同时遵循整洁架构原则。我们扩展了初始实现,添加了关键功能,如依赖注入、错误处理、验证、真实数据库集成、身份验证和授权、日志记录和监控、环境配置、CI/CD、代码质量和Linting以及项目文档。 通过遵循这些实践,你将确保你的API不仅功能齐全,而且易于维护、可扩展且准备好投入生产。随着你继续开发,请随时探索其他模式和工具,以进一步增强你的应用程序。

2301_79969095的博客 1892

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 582

基于STM32L4XX的环境光传感器(AS7343-DLGMN)应用程序设计

define AS7343_STATUS_SPECTRAL_INT (1 << 3) /* 光谱数据就绪 */#define AS7343_SYS_CFG_SPECTRAL_EN (1 << 1) /* 光谱测量使能 */#define AS7343_SYS_CFG_ALS_EN (1 << 0) /* ALS使能 */#define AS7343_SYS_CFG_INT_EN (1 << 4) /* 中断使能 *//* 切换通道组 (0=组1 F1-F6, 1=组2 F7-F12) */

myron6688的博客 258

Node.js 是什么?Node.js与JavaScript的区别是什么?

node.js是什么?Node.js是一个Javascript运行环境(runtime)。Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行     Node.js是一个可以快速构建网络服务及应用的平台,是用Javascri...

吴甜甜的技术博客 3万+

使用Python实现卷积神经网络(CNN)

卷积神经网络是一种专门用于处理具有网格状拓扑结构数据(如图像、声音)的深度学习模型。CNN的核心组件是卷积层和池化层,它们能够有效地从图像中提取特征并实现空间不变性,使得模型能够对图像中的物体进行识别和分类。我们定义一个简单的卷积神经网络模型,包括卷积层、池化层和全连接层。return x# 创建模型实例我们选择交叉熵损失函数作为分类任务的损失函数,并使用随机梯度下降(SGD)作为优化器。

Echo_Wish 4490

Node.js | JavaScript也能写后端?

Node.js作为前端人员高薪必备技能,本文带你了解Node.js的前世今生以及环境搭建

只想和你一起进步 9954

ROS & ROS2 机器人深度相机激光雷达多传感器标定工具箱

不过,多传感器标定工具箱允许通过编辑 yaml 文件来调整标定目标的参数: <repository>/mutlisensor_calibration/cfg/TargetWithCirclesAndAruco.yaml%YAML:1.0rows: 4cols: 1dt: irows: 4cols: 2dt: frows: 1cols: 12dt: fCAD 模型网格/云通过 GICP 将模型数据与分割点云对齐,用于优化检测到的目标姿态。

2506_90492529的博客 2109

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

node.js 初识node.js,运行在服务端的 JavaScript(一)

文章目录1.浏览器原理2.浏览器访问服务器过程3.web开发本质4.什么是node.js?5.node.js有哪些特点?6.安装Node.js 1.浏览器原理 2.浏览器访问服务器过程 https://edu.aliyun.com/lesson_1730_14083?spm=5176.10731542.0.0.4fb815f2VGm9PU#_14083 请求报文和相应报文。 3.web开发本质 一般web都是下面三点一样: 1.请求,客户端发起请求。 2.处理,服务器处理请求。 3.响应,服务器将处理结果

探索技术与实践的旅程,分享编程经验与工具使用心得,助力开发者提升技能。 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Node.js中运行JavaScript代码

最近学习JS的内容,有幸得到Bill的指点,之前自己运行JS的脚本是在浏览器上,之后惊喜的发现,可以在加载Node.js环境中,在命令窗口运行脚本。这样做的好处是什么呢?大大的减少了窗口来回切换的的频率,提高我们的效率。看起来也是很高大上的。

No body But u 8245

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Node.js】使用 Node.js 需要了解多少 JavaScript?

总的来说,使用 Node.js 开发并不要求你掌握所有 JavaScript 的高级知识,但了解 JavaScript 的基础和异步编程的核心概念,将大大提高你的开发效率。通过不断学习和实践,你将能够利用 Node.js 构建出高效、可扩展的应用程序。希望本文能帮助你了解在学习 Node.js 之前需要掌握的 JavaScript 知识,帮助你在 Node.js 的开发路上走得更远。祝你编码愉快!

佚名程序员 1940

前端node.js入门-前端工程化与模块化

1.了解node.js的概念 2.学会使用node.js模块化处理,了解npm

来自想要赚大钱的小周同学 7988

node.js和JavaScript的关系

1. 什么是node.js node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时的环境。 2. 什么是JavaScript 2.1比较JavaScript 和 Java 两者之间没有关系 V8是google开源的JavaScript引擎,用于执行JavaScript;类似JVM执行java字节码。在node.js 诞生之前,V8是内置于Chromeium中的,现在也...

weixin_41160054的博客 5571

node.js和javascript的关系

node.js是一个基于 Chrome V8引擎的 JavaScript 运行时环境 一、类比JavaScript和java JavaScript java V8 JVM node.js JRE JavaScript和java都是一门编程语言,至于两者的关系,是雷锋和雷峰塔的关系 V8是google开源的JavaScript引擎,用于执行JavaScript,...

【小石头的茅坑】 71万+

JavaScript 基础 - 第20天_Node.js入门

Node.js安装与使用

八年大厂一线老程序员。现独立开发创业中,并且已经靠独立开发赚取人生第一桶金。 2238

Node.js和Vue

浅谈为什么vue前端项目要使用nodejs 一、传统的JavaScript 传统的js是运行在浏览器上的,因为浏览器内核分为两个部分: 渲染引擎---渲染HTML和CSS, JavaScript 引擎---负责运行 JavaScript,随着技术的发展, Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快且性能好,同时由2009年5月Ryan Dahl开发的Node.js诞生。 二、什么是Node.js? Node.js 是一个基于 Chrome V8 引擎的 JavaS.

MRGCODING 1万+

JavaScript和Node.js的关系

JavaScript和Node.js的联系与区别。

cnds123的专栏 4555

Node.js 和 JavaScript 的区别:深入解析

JavaScript 和 Node.js 的核心区别在于运行环境与应用场景。JavaScript 主要运行于浏览器,用于 DOM 操作和前端交互,受限于沙盒安全机制;Node.js 则是基于 V8 引擎的服务器端运行时,提供文件系统、网络等底层 API,擅长高并发 I/O 操作。两者共享语言语法,但功能生态不同——前端依赖浏览器 BOM/DOM,后端则通过 npm 模块扩展能力。理解这些差异有助于开发者针对 Web 前后端场景选择合适方案,构建高效应用。

你若盛开,清风自来 1851

node.js毕设网课视频课设程序+论文

本选题针对网课视频课设等问题的研究具有重要的理论意义和现实意义。 理论意义:本选题研究将对网课视频课设相关的理论基础进行深入的剖析。例如,有助于完善在线教育系统功能设计的相关理论,为后续研究提供理论参考框架。 现实意义:随着网课的广泛应用,其视频课设的合理性直接影响着教学效果和用户体验。本研究能够为网课平台提供优化课程信息管理、课程分类、课程资料整合等方面的实践指导,解决目前网课视频课设中存在的功能不优化、用户体验不佳等问题,提高网课的整体质量,以适应日益增长的在线教育需求。

达华计算机毕设 797
上一篇: node.js第十二课(Express框架及入门介绍)
下一篇: 去除express.js 3.5中报connect.multipart() will be removed in connect 3.0的警告
栖息
博客等级 码龄15年 64粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值