前言 想开始编写Node.js代码,那么我们就必须先熟悉它的模块化规范CommonJS,本文将详细讲解CommonJS规范 本文代码 >>> github 地址 CommonJS Node 应用由模块组成,采用 CommonJS 模块规范. 每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. [特点] 所有代码都运行在模块作用域,不会污染全局作用域. 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载…
前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js是一个JavaScript运行平台,其显著特征是它的异步和事件驱动机制,以及小巧精悍的标准库.Node目前有两个活跃版本:长期支持版(LTS)和当前版,由Node.js基金会进行管理并提供支持.这个行业联盟遵循开放式治理模型,如果想了解更多与Node管理相关的信息,可以查阅其官网上的文档. 自200…
前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的代码全部可在github地址找到>>>node 代码 安装 点击查看>>>node 中文官网地址 [版本选择] 看图发现包含两种版本:长期支持的稳定版本 以及 当前发布版(包含很多最新的特性) 安装的过程就省略了... 开发环境 那么我们如果想要开发一个node程序,需要什…
前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量,我们先来熟悉些常用的全局变量 Buffer(二进制数据处理).process.console timer(setImmediate) 看一段简单的代码: >>> 07_global.js const NUM = 1000; global.NUM = 2000; // 这里输出到全局 mod…
前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录路径的实用工具. 它可以使用以下方式访问: const path = require('path'); [path.normalize(path)] path.normalize() 方法规范化给定的 path,解析 '..' 和 '.' 片段. 11_path_normalize.js const…
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await 等新语法,所以请保证 node 环境在 7.6 版本以上. 安装node.js 直接安装 node.js :node.js官网地址 https://nodejs.org nvm管理多版本 node.js :可以用nvm 进行node版本进行管理 Mac 系统安装 nvm https://githu…
1.Web 与 Node.js 相关技术介绍 1.1.Web应用的基本组件 web应用的三大部分 brower(GUI)<==>webserver(business logic.data access)<==>database(data storage) GUI(浏览器.HTTP客户端) Web服务器(Node.js service) 请求(浏览器访问网页时发送一个请求给服务器) 业务逻辑(服务器进行处理请求) 连接数据库(处理的过程中需要连接数据库,进行数据处理,最后将数据返回给…
Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practice xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!…
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404),或服务器内部发生了错误(500),站点会展示出某个特定的页面,比如: 那么如何在 Koa 中实现这种功能呢?其实,一个简单的中间件即可实现,我们把它称为 http-error.实现过程并不复杂,拆分为三步来看: 第一步:确认需求 第二步:整理思路 第三步:代码实现 确认需求 打造一个事物前,需要先确…
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分,版本迭代和后期维护占了极其重要的部分.项目上线运转起来之后,我们如何知道项目运转的状态呢?如何发现线上存在的问题,如何及时进行补救呢?记录日志就是解决困扰的关键方案.正如我们每天写日记一样,不仅能够记录项目每天都做了什么,便于日后回顾,也可以将做错的事情记录下来,进行自我反省.完善的日志记录不仅能…
视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并使用 安装 koa-static: npm i koa-static -S 修改 app.js,增加并指定 /public 目录为静态资源目录. const Koa = require('koa') const path = require('path') const bodyParser = re…
经过前面的Node.js实战(一)之概述 想必你应该对Node.js的概念.应用场景.优缺点等有个大致的了解,同时你本地Windows或者Linux上已经准备好了Node.js环境. 下面我们来进入每种编程语言必经之关“HelloWorld”,不要小看这个HelloWorld,每学一样新的东西,HelloWorld是必须的,因为能给有接下来学习的勇气. 这里以Linux为例,第一个HelloWorld例子 console.log('hello world') 结果如下: 还可以将其编辑为一个he…
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由请求.结构分层.视图渲染.静态资源等. 那么,JSON 呢?JSON 格式数据的传输,已经深入到了我们的码里行间,脱离了 JSON 的人想必是痛苦的.那么,复合吧! 如何设置 JSON 格式 伟大的武术家--李小龙先生--说过这样一段话: Empty your mind, Be formless,s…
视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据最终都会展示在视图中,这时候就需要用到『模板引擎』. 什么是模板引擎? 模板引擎是为了使用户界面与业务数据分离而产生的,可以生成特定格式的文档.例如,用于网站的模板引擎会生成一个标准的 HTML 文档. 市面上常见的模板引擎很多,例如:Smarty.Jade.Ejs.Nunjucks 等,可以根据个…
视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请求处理等.现在你已经迈出了走向成功的第一步. 目前,整个示例中所有的代码都写在 app.js 中.然而在业务代码持续增大,场景更加复杂的情况下,这种做法无论是对后期维护还是对患有强迫症的同学来说都不是好事.所以我们现在要做的就是:『分梨』. 分离 router 路由部分的代码可以分离成一个独立的文件…
任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这篇文章中,我们通过创建一个 Node.js + MongoDB 项目,来教大家如何使用 flow.ci 8 步完成自动化持续集成的搭建. 了解 flow.ci flow.ci 是融入了 workflow 机制的持续集成(CI)服务,也可以理解为自动化流程平台,除了集成代码.编译.测试之外,还可以集成常用的工具.灵活自定义流程.1 分钟即可完成开发测试环境搭建,开启第…
在上一篇文章在Node.js中使用RabbitMQ系列一 Hello world我有使用一个任务队列,不过当时的场景是将消息发送给一个消费者,本篇文章我将讨论有多个消费者的场景. 其实,任务队列最核心解决的问题是避免立即处理那些耗时的任务,也就是避免请求-响应的这种同步模式.取而代之的是我们通过调度算法,让这些耗时的任务之后再执行,也就是采用异步的模式.我们需要将一条消息封装成一个任务,并且将它添加到任务队列里面.后台会运行多个工作进程(worker process),通过调度算法,将队列里的任…
原文地址:Node JS后端项目开发与生产环境总结 Node JS常用后端框架有express.koa.sails.国产框架有个egg js,已经在cnode投入生产了,还有个think js,类似think php,在此支持一波.每个框架在开发环境与生产环境都有所不同,这里以koa为例 开发环境与生产环境的区别 建立在后台模板渲染(ejs, pug)的基础上.前后分离架构请参考webpack热更新实现 开发环境 热更新 错误处理 前端js代码自动打包 生产环境 静态缓存(static cach…
Koa 基本介绍 Koa是Node.js中非常出名的一款WEB框架,其特点是短小精悍性能强. 它由Express原版人马打造,同时也是Egg框架的设计蓝图,可以说Koa框架的学习性价比是非常高的. 官方文档 项目搭建 我们先初始化一个项目: $ npm init TypeScript可以让项目更加容易维护,所以安装TypeScript是不可或缺的一部分: $ npm install typescript ts-node @types/node peer dependencies yourself…
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说明.为了学习备份,所以拷贝过来. Express框架 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 概述 运行原理 底层:http模块 对http模块的再包装 什么是中间件 use方法 Express的方法 all方法和HTTP动词方法 set方法 response…
2011年阿里就已经开始在生产环境中使用nodejs. 阿里的技术栈中,Java是最核心的,Nodejs扮演怎样的一个角色? 1. 基础设施大部分采用Java实现,变化较少,有事务要求的Business Services通常使用Java. 2.而Node.js则替代过去PHP/Java Web的场景,用在需要快速迭代,需求变化非常快的用户侧. 3.很多内部的工程化支撑系统也逐渐基于Nodel.js了. 一.nodejs是什么 nodejs是采用google chrome浏览器v8引擎,由c++编…
回想我写的node.js和MongoDB的博客,都是菜鸟教程那里的知识,所以我打算不写了,那些都是基础,在项目开发中,我发现单单有那些基础不行,这些基础可以尽快学好,然后学习项目开发过程 下面是两个教程的链接: https://www.runoob.com/nodejs/nodejs-tutorial.html                    node.js教程 https://www.runoob.com/mongodb/mongodb-tutorial.html            …
学习nodeJS权威指南的学习记录 导航: 1.console模块 2.全局变量 3.Buffer对象 4.事件对象 5.网络请求 6.文件操作对象 一. COMMON.js的学习.(commonJS的详细文档内容阅读) NODE.js采用的COMMON.JS标准来实现的,这里我们来专门的了解一下COMMON.JS的内容: 1.模块化的方式来思考我们编写的程序,每一个JS为单一的模块内容,其有独立的作用域,有专门对外开放的接口对象.以此使得外部内容在不需要了解具体的实现方式的时候可以直接使用相关…
1.核心模块 核心模块是Node.js的心脏,由一些精简高效的库组成,为其提供了基本的API.2.全局对象 global.所有的的全局变量都是其属性.其根本的作用是作为全局变量的宿主.3.全局变量 1.process:描述当前Node.js的进程状态的对象,提供一个与操作系统的简单接口. 方法 process.argv 命令行参数数组 三个参数1.node 2.脚本文件名 3.运行参数 1.process.stdout: 标准输出流,通常使用的console.log()向标准输出打印字符,而pr…
在前一篇文章中可伸缩架构简短系列中提到过关于异步的问题.当时推荐使用RabbitMQ来做任务队列的实现方案.本篇文章以Node.js为例子,来实际操作如何和RabbitMQ进行交互. 介绍 RabbitMQ是一个消息代理.它最初的思想特别简单:接受并且转发消息.你可以将它想象为邮局:当你将邮件放到信箱中,你可以非常肯定快件员最终会将邮件交到接受人手中.你可以把RabbitMQ比喻为信箱.邮局和快递员.RabbitMQ和邮局之间主要的区别是它不处理纸张,而是接受.存储和转发二进制数据‒消息. 在R…
本文转自:https://www.cnblogs.com/cpselvis/p/6288330.html 在前一篇文章中可伸缩架构简短系列中提到过关于异步的问题.当时推荐使用RabbitMQ来做任务队列的实现方案.本篇文章以Node.js为例子,来实际操作如何和RabbitMQ进行交互. 介绍 RabbitMQ是一个消息代理.它最初的思想特别简单:接受并且转发消息.你可以将它想象为邮局:当你将邮件放到信箱中,你可以非常肯定快件员最终会将邮件交到接受人手中.你可以把RabbitMQ比喻为信箱.邮局…
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用. 通常windows安装Node.js会自带将npm一起安装,但是linux上有例外,以ubuntu16.04为例,我如果要使用npm的话,还需要使用命令安装. 1.安装npm(以ubuntu16.…
当项目逐渐扩大以后,功能越来越多,这时有的时候需要增加或者修改,同时优化某些功能,就有可能出问题了.针对于线上Linux环境我们应该如何调试项目呢? 别怕,Node.js已经为我们考虑到了. 通过 node debug 对应的js文件 即可调试程序 例如: node debug hello.js 控制台输出: 如何调试,通常有这么几个命令可供参考使用: (1)cont(相当于继续执行): (2)next(跳到下一个语句): (3)step(进入当前执行函数中的语句): (4)out(跳出当前执行…