【Nodejs开发技术】浅谈Nodejs应用的主文件index.js的组成部分

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法 阅读详情

前言

Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●)。呃哼...YY先到这里,原谅本屌是个二次元萝莉控。

正文

想谈好对象,并不是要new一个就行了,必须要先认识人家后慢慢的才可以上手,然后慢慢推上床<( ̄︶ ̄)>。
想想自己搞前端开发的时候,为了尽力让页面在浏览器君体内完美展现,也是做了不少功课,其中最不可少的就是要认识认识。这玩意是什么,能干什么。
对于寄宿在浏览器中的Javascript就不多说了,之前发过一篇简单的文章《前端Javascript与Nodejs的异同》
,大概描述了下Nodejs与前端javascript的异同,如果你好好看的话肯定能明白的。

index.js

搭建一个Node应用,少不了一个主文件,不少人根据各自喜好来定义名字,像app.js、main.js。
这里尊重npm init时的默认配置为index.js,其实个人还是挺喜欢app.js这个命名的。
为了方便,本屌也使用了express这个高大上的框架。
好!!!下面,我们来看看index.js里应该有的内容。

//引用依赖模块
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// 视图引擎设置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

//中间件
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

//路由
app.use('/', routes);
app.use('/users', users);

//遇到错误时的中间件
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

//抛出 提供给www.js 并通过www.js来开启服务
module.exports = app;

以上代码是通过express脚手架生成的一个比较标准的内容,个人在里面做了简单的注释。然后我想说,请童鞋们不要急着看每一行代码是什么意思,因为如果你熟悉nodejs不用看也知道写的什么,如果你不了解,也暂时不要去了解,我们看一本新书的时候,一定要先看一下它的目录才能大概知道书的内容。
现在我们来整理一下这个index.js的大概目录,不难发现,它有几个重要的部分组成:

  1. 引入依赖模块

  2. 设置相关配置

  3. 定义中间件

  4. 定义路由

  5. 开启服务

几乎所有的入口文件都少不了这几个组成部分,而且顺序也是按照上面列表从上到下依次编写。这里需要说的是中间件这一部的编写,大部分中间件是写在路由之前,但是有些中间件应该在路由之后执行,比如处理错误的中间件,一般放在路由后面执行。

其实一个完整的入口文件并不是只有上面说的那么多,它还有一些可选项来构成完整的index.js。为了方便比较,就直接列举出来吧:

  1. 引入依赖模块

  2. 设置相关配置

  3. 连接数据库(可选)

  4. 定义中间件

  5. 定义路由

  6. 开启服务

  7. 在多核系统上启动cluster多核处理模块(可选)

可以看出,添加了连接数据库和多核处理两个可选组成部分。

总结

一个完整的index.js由7个部分组成,大家只要把主文件当成白雪公主,把7个组成部分当作七个小矮人就行了,哈哈,这个记法真天才。

不过话说回来,并不是每个应用都必须7个大将全上场,可能是5个,可能是6个,也可能是7个,大家在组织代码的时候根据应用和硬件需求来自定义构建即可。

原文地址:https://segmentfault.com/a/1190000006625764

 【关于我们】

才淇(微信公众号:caiqicehua),专注于国内各大互联网公司社会招聘内推。每天更新最新互联网名企(包括但不限于今日头条、网易游戏、BAT、网易互联网、小米、京东、乐视、携程等名企)内推信息,有技术岗、有产品岗、有运营岗、有设计岗、有交互岗、有销售岗,更有其他N多相关岗位!更多内推信息请扫描以下二维码关注查阅。

 

如何用DeepSeek写年底工作总结?——从入门到精通的全流程指南 AI助手DeepSeek如何高效撰写工作总结 摘要:本文介绍如何利用DeepSeek智能AI助手高效完成工作总结写作。工作总结具有结构固定、语言规范、内容数据化三大特性,而DeepSeek的结构化生成、风格适配、数据整合和迭代优化四大核心能力与之完美匹配。文章提出"准备-搭架-填充-优化"四步工作法:1)精准输入岗位、时间范围等核心信息;2)先搭建逻辑清晰的提纲框架;3)分模块填充具体内容,突出数据与案例;4)通过风格润色和细节补充进行优化。通过合理运用多模态材料处理能力,DeepSee 阅读详情

相关推荐

simulink调用C代码函数-C Caller模块

simulink中如何调用写好的C代码函数?使用C Caller模块调用C代码。

weixin_40531919的博客 5673

Nodejs应用的主文件index.js的组成部分

index.js 搭建一个Node应用,少不了一个主文件,不少人根据各自喜好来定义名字,像app.js、main.js。 这里尊重npm init时的默认配置为index.js,其实个人还是挺喜欢app.js这个命名的。 为了方便,使用了express这个的框架。 下面,我们来看看index.js里应该有的内容。 //引用依赖模块 var express = require('express'); var path = require('path'); var favicon = require('s

m0_63476377的博客 3458

Docker “docker login“ 失败? 登录阿里云镜像仓库仓库 unauthorized: authentication required

文章目录听说你 login fail?来,让我们解决一下!登录,撒花 听说你 login fail? 美滋滋的在服务器上安装完成Docker应用,开始配置阿里云镜像加速?然后被阿里云官方文档蹂躏?别急别急,让我来拯救你。 我们先来看看 阿里云官方文档 Docker镜像基本操作: 好家伙,emmm… 上来直接就Login Succeeded,这不简直so easy?我们也来照着操作操作: docker@default-online:~$ docker login registry.cn-hangzhou.a

zhuzicc的博客 1万+

011Node.js自定义模块文件名是index.js引入的三种方法

Node.js自定义模块文件名是index.js引入的三种方法

shi_xiaobin的专栏 540

MCP4728 电路及stm32F103程序移植

写在前面 通过优快云查到一些MCP4728 的程序,结合程序及datasheet对于驱动的描述,理清了思路 感谢开路者! MCP4728的电路比较简单,见下文描述 应用电路 datasheet: 实际测试电路: SCL接stm32的PB10,SDA接PB11 RDY/BSY引脚和LDCA引脚,悬空 解释见截图: MCP4728地址 选择任意输出通道写入DAC输入寄存器 应用程序 int mcp4728_write_all_channel(float vol1, float vol2, fl

u013074298的专栏 5428

以太网硬件核心:MAC、PHY、MII与交换机原理与实战排查

计算机网络通信的基础依赖于一套完整的硬件协议栈。在OSI模型中,数据链路层和物理层是实现设备间可靠、高效数据传输的基石。其核心原理在于将上层数据包封装成帧,并通过特定的介质访问控制与物理信号转换机制进行传输。这一过程的技术价值在于为上层应用提供了透明、稳定的通信信道,是互联网和所有局域网通信的物理承载。在嵌入式系统、网络设备开发及运维等应用场景中,深入理解底层硬件交互至关重要。本文将聚焦于以太网硬件的两大核心组件:负责逻辑成帧与流量控制的MAC控制器,以及负责数模转换与链路协商的PHY芯片。它们通过MII、

dgqvhtlwq472235338的博客 424

Node.js入门

nodeJs入门简介node实践 简介 实现目标:javascript可以操作服务器,让js成为php,python,java等服务端语言平起平坐的语言 特点:解决服务器高性能瓶颈问题 1.单线程 2.非阻塞i/o 3.事件驱动 应用场景:博客、多人聊天室 不擅长计算 node实践 创建服务器 // 1.引入http协议,必须得使用require('http') const http = require('http'); // 创建一个服务器 const server = http.createServer

qq_45155741的博客 300

树莓派34/100 - Pico读取MPU6050加速度和陀螺仪传感器数据

树莓派Pico连接MPU-6050模块(三轴陀螺仪+三轴加速度),读取运动姿态数据。

申龙斌的程序人生 5088

初识node.js(使用)

- 兼容:给不支持js的浏览器一个提示 --> < noscript > < strong > We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.

AYBBZXY的博客 2103

深度学习分类任务中,正负样本比例失衡的5种实战解决方案(附代码)

本文深入探讨了深度学习分类任务中正负样本比例失衡的5种实战解决方案,包括智能采样技术、动态数据增强、损失函数工程、模型架构创新和训练策略优化。针对信用卡欺诈检测、医疗诊断等场景,提供了详细的代码实现和评估方法,帮助开发者有效解决样本不平衡问题,提升模型在真实场景中的表现。

h9j8k7l6m5n的博客 425

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9372

浅谈Nodejs应用的主文件index.js的组成部分

前言 Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●)。呃哼...YY先到这里,原谅本屌是个二次元萝莉控。 正文 想谈好对象,并不是要new一个就行了,必须要先认识人家后慢慢的才可以上手,然后慢慢推上床<( ̄︶ ̄)>。想想自己搞前端开发...

weixin_34194359的博客 406

Python之aaindex包语法、参数和实际应用案例

`aaindex`是一个专为生物信息学设计的Python包,主要用于处理氨基酸指数(AAindex)数据库。该数据库收集了各种氨基酸的物理化学性质和统计特性,涵盖疏水性、电荷、体积等500多种特性。`aaindex`包提供了便捷的接口,让用户能够快速访问这些数据,并应用于蛋白质序列分析、结构预测、功能推断等领域。

王国平的博客 1037

nodejs访问本地静态资源(进入index.html)

最近用nodejs搭建服务,需要直接访问本地的index.html文件。让别的电脑通过输入IP:/index.html访问 在网上也找到了代码,顺便做个笔记 代码 var url = require("url"), fs=require("fs"), http=require("http"), path = require("path"); http.c...

tabweb的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Node.js在Raspberry Pi上的应用教程 - 基于audstanley/NodeJs-Raspberry-Pi

Node.js在Raspberry Pi上的应用教程 - 基于audstanley/NodeJs-Raspberry-Pi 项目目录结构及介绍 由于提供的链接直接指向GitHub仓库而非具体的官方教程,我们基于常规的Node.js项目结构来推测一个标准的项目布局,假设该仓库遵循了常见的组织方式。 ├── README.md // 项目说明文件,包含基本的项目介绍和快速入门指南。 ├──...

gitblog_00389的博客 1037

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

nodejs服务端MVC架构介绍

nodejs服务端MVC架构介绍 MVC架构本质:确定每一个js文件的职责 以nodejs数据管理系统为例,本文章代码仅为服务端演示代码,单独复制粘贴可能无效果。因为MVC并不是一门技术,而是一种项目架构思想 index.js:负责接收请求 router.js:负责将请求分发给C层 controller.js:C层负责处理业务逻辑(V与M之间的沟通) views:V层:负责展示页面 model:...

坤小的专栏 3586

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaScript、Nodejs、TypeScripy 导包:module、export、import、require

JavaScript、Nodejs、TypeScripy 导包:module、export、import、require

freeking101的博客 6244

在vscode运行node.js

2.打开浏览器,输入本地ip以及你打开的端口,我的是127.0.0.1:8080。1.在集成终端运行主文件index.js。

qq_63075864的博客 1054

[Day1] Node.js访问index.html

Node.js访问index.html 文章目录Node.js访问index.html要求环境安装 [Node.js](https://nodejs.org/)实战 要求 了解JavaScript和html基础知识 了解node.js常用模块:http,fs 环境 OS: Win10 Node.js: v12.19.0 Notepad++ 安装 Node.js 实战 编写一个简单index.html文件. <!DOCTYPE html> <html lang="en">

zhs362625119的专栏 2072

二.nodejs实现加载index.html并响应js css文件。

test.js里的工作原理,就是获取url,然后提取js,css结尾的目录, 然后fs.readFile("."+request.url, 'utf-8',function (err, data) 读取对应的文件,响应即可。像之前我们创建了一网页服务,都是在代码里直接输出html给客户端,现在我需要将html和代码分开,单独写成一个index.html,该如何实现呢?但是这里会有问题,你的index.html如果加载了js文件,css文件,或者jpg图片,是不起作用的。test.js代码如下(来源网络)

d3582077的专栏 1144

NodeJS模块导出使用

我们的HTTP服务器需要导出的功能非常简单,因为请求服务器模块的脚本仅仅是需要启动服务器而已。 我们把我们的服务器脚本放到一个叫做 start 的函数里,然后我们会导出这个函数。 var http = require("http"); function start() {   function onRequest(request, response) {     console.log("

M小卢 2587

nodejs中第三方模块改默认的index.js入口

const axios = require("axios"); 一般来说nodejs默认会找node_modules对应模块下的index.js文件 但如果对应的文件并不是以index命名,可以到根目录(db)下打开cmd,输入npm init --yes,会生成一个package.json文件,将默认的接口改为db.js ...

Fabricant的博客 1356

centos下打包electron_NodeJS的桌面应用开发 Electron

##开发环境及版本号##NodeJS : 7.2.0Electron : 1.4.10##开始教程##安装各个应用:安装electron的包npm install -g electron安装 aser 打包工具npm install -g asar安装 packager 发布工具npm install -g electron-packager建立空的 nodejs 项目:npm init建立js程...

weixin_35838394的博客 260

JS实现五笔编码查找对应index(nodejs实现)

题目: 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入...

Sherry's Blog 907

js压缩方法

首先要安装nodeJs 新建一个index.js function log(text){ console.log(text) } log("Hello~") 命令行运行: uglifyjs index.js -c -m -o index.min.js 然后就生成了: function log(o){console.log(o)}log("Hello~");

链珠的博客 2172

NodeJs Electron 搭建基础桌面应用

Electron 概述 Electron为用纯JavaScript创建桌面应用提供了运行时。原理是,Electron调用你在package.json中定义的main文件并执行它。main文件(通常被命名为main.js)会创建一个内含渲染完的web页面的应用窗口,并添加与你操作系统的原生GUI(图形界面)交互的功能。 第一步:基于NodeJs 环境,创建NodeJs...

zhouzhiwengang的专栏 1292
上一篇: 从零开始实现实时多人点歌机器人 (来自网易云音乐)
下一篇: 【web前端开发技术】深入理解JavaScript异步编程--JavaScript异步编程的终极演变
caiqicehua
博客等级 码龄10年 153粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值