node自学之Nodejs 路由模块封装、封装仿照express的路由
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs中的路由模块封装、封装仿照express的路由。
路由模块封装(模块化的方式封装) 上一个blog,我们把get和post操作都写到了服务器代码中,显得很大很臃肿,应该进行封装。
所以我们创建模块,把所有的路由操作封装在这个文件里面:
model.js,即把路由以属性的方式封装到app对象,最后导出这个app对象:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859var ejs=require('ejs');var fs=require('fs');var app={ //login 路由 login:function(req,res){ console.log('login'); //res.end ...
node自学之NodeJs WEB服务器、静态文件托管、 路由、EJS模板引擎、GET、POST
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs中的NodeJs WEB服务器、静态文件托管、 路由、EJS模板引擎、GET、POST。
Nodejs 静态文件托管 上一个blog介绍了如何使用nodejs创建一个WEB服务器,用于静态文件托管。
但我们会发现,大量的代码写在一块,比较混乱。其实我们可以把一些代码封装为一个模块(router.js),然后使得服务器代码简化:
即大量的读取文件等操作(路由操作),封装为一个router.js文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172var fs=require('fs');var path=require('path'); var url=require('url');function ge ...
node自学之Nodejs的非阻塞I/O、异步、事件驱动
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs中的Nodejs的非阻塞I/O、异步、事件驱动。
Nodejs的单线程、非阻塞I/O、事件驱动 在Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了。 (高并发场景)
Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。
之前,我们使用fs模块的readFile方法是一个异步方法,或者说是非阻塞式IO。
所以代码:
结果:
但是,当我们在外部使用这个异步方法的时候,会出undefined
因为,这个方 ...
node自学之利用HTTP模块 URl模块 PATH模块 FS模块创建一个WEB服务器
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs中的利用HTTP模块 URl模块 PATH模块 FS模块创建一个WEB服务器。
WEB服务器 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前最主流的三个Web服务器是Apache Nginx IIS。
Nodejs创建一个WEB服务器 可以用nodejs提供一个WEB服务器。
最初,我们会放置静态文件到服务器,有图片,css,JS,HTML等。然后当客户端发送请求,服务器需要解析请求URL,找到正确的资源位置,然后以一定形式返回。
例子1:
123456789101112131415161718192021222324252627282930313233343536373839404142//引入http模块var http=require('http');//fs模块var fs=require('fs' ...
node自学之Nodejs中的fs模块的使用,异步处理
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs中的fs模块的使用。
fs模块 fs模块用于文件操作,是node内置的模块。
有大量的方法:(这些方法可以通过vscode中ctrl+鼠标点击打开源码,查看相关参数等)
为了举例说明相关操作,我们创建一个文件夹,里面先使用npm init –yes强制生成一个package.json文件。然后创建入口文件app.js。
首先,我们使用这个fs模块时,先导入
fs.stat 检测是文件还是目录
判断html是文件还是目录(先手动创建html文件夹):
结果(命令行输入node app.js):
当判断package.json是文件还是目录:
fs.mkdir 创建目录
通常用于如果判断一个目录是否存在,如果不存在则用这个方法创建目录。
例如用这个方法创建css目录:
如果目录以存在则报错说已存在,不存在则创建。上面的mode参数和callback参数可以不写。
fs.writeFile 创建写入文件
例如我们可以在html文件夹里面创建index.html文件 ...
node自学之Nodejs中的包、npm 、第三方模块、package.json 以及cnpm
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs 中的包、npm 、第三方模块、package.json 以及cnpm。
包与npm Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的模块(属于自定义模块)。Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理。
其中某模块引入的包中,其可能也是内部需要引入一些其他的模块。
完全符合CommonJs 规范的包目录一般包含如下这些文件。• package.json :包描述文件。• bin :用于存放可执行二进制文件的目录。• lib :用于存放JavaScript 代码的目录。• doc :用于存放文档的目录。
在NodeJs 中通过NPM (包管理工具)命令来下载第三方的模块(包)。所有的第三方模块都可以在官网找到。
NPMnpm 是世界上最大的开放源代码的生态系统。我们可以通过npm 下载各种各样的包,这些源代码(包)我们可以在https://www.npmjs.com 找到。
npm 是随同NodeJ ...
node自学之CommonJs 和Nodejs 模块、自定义模块
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得(CommonJs 和Nodejs 模块、自定义模块)
内容:CommonJs 和Nodejs 模块、自定义模块。
CommonJs 和Nodejs 模块、自定义模块CommonJs 什么是commonJS
JavaScript 是一个强大面向对象语言,它有很多快速高效的解释器。然而, JavaScript标准定义的API 是为了构建基于浏览器的应用程序。并没有制定一个用于更广泛的应用程序的标准库。CommonJS 规范的提出,主要是为了弥补当前JavaScript 没有标准库的缺陷。它的终极目标就是:提供一个类似Python,Ruby 和Java 语言的标准库,而不只是让JavaScript 停留在小脚本程序的阶段。用CommonJS API 编写出的应用,不仅可以利用JavaScript 开发客户端应用,而且还可以编写以下应用: •服务器端JavaScript 应用程序。(nodejs) •命令行工具。 •桌面图形界面应用程序。
CommonJS 就是模块化的标准,nodejs 就是CommonJ ...
node自学之HTTP 模块、URL 模块、supervisor 工具
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得(HTTP 模块、URL 模块、supervisor 工具)
内容:HTTP 模块、URL 模块、supervisor 工具。
HTTP 模块、URL 模块、supervisor 工具Node.js 中,将很多的功能,划分为了一个个module(模块)。Node.js 中的很多功能都是通过模块实现。
http模块 如果我们使用PHP 来编写后端的代码时,需要Apache 或者Nginx 的HTTP 服务器,来处理客户端的请求相应。
不过对Node.js 来说,概念完全不一样了。使用Node.js 时,我们不仅仅在实现一个应用,同时还实现了整个HTTP 服务器。
http模块在node已经内置好了,可以直接require引用。
var http = require("http");
创建服务器
使用http.createServer() 方法创建服务器,并使用listen 方法绑定8888 端口(通常端口设置大于3000,避免端口冲突)。函数通过request, respons ...
NodeJS介绍&安装&开发工具配置
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得(NodeJS介绍&安装&开发工具配置)
内容:NodeJS介绍&安装&开发工具配置。
NodeJS介绍&安装&开发工具配置NodeJS介绍 Node.js 是一个Javascript 运行环境(runtime)。它让JavaScript 可以开发后端程序,它几乎能实现其他后端语言能实现的所有功能。 Nodejs 是基于Google V8 引擎,V8 引擎是Google 发布的一款开源的JavaScript 引擎,原来主要用于Chrome 浏览器的JS 解释部分,但是Ryan Dahl 把这个V8引擎搬到了服务器上,用于做服务器的软件。
学习node的必要性1、Nodejs 用户量大:我们无法统计Nodejs 软件的下载量,但是我们可以通过Nodejs框架Express 的下载量来分析出Nodejs 的用户量非常惊人。
2、Nodejs 是程序员必备技能:对于前端开发者而言Nodejs 目前是必备技能。
3、Nodejs 最擅长高并发:Nodejs 最擅长的 ...
前端框架react自学之react状态(六)
终极目标:掌握和使用react
本博客目的:记录react学习的进度和心得(react状态)
内容:通过视频学习,掌握react基础语法。
前端框架react自学之react状态(六)react state相当于VUE的DATA,但是使用方式跟VUE不一致。
修改state时,使用setState方法去修改。直接修改state不会渲染
通过this.setState修改完数据后,并不会立即修改DOM里面的内容,react会在这个函数内容所有设置状态改变后,统一对比虚拟DOM对象,然后在统一修改,提升性能。
react组件的render方法一个组件类必须要实现一个 render 方法,这个 render 方法必须要返回一个 JSX 元素。必须要用一个外层的 JSX 元素把所有内容包裹起来,返回并列多个 JSX 元素是不合法的。
案例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import React from 'react';imp ...