nodejs学习

使用nodeJS创建API接口,连接mysql数据库(新手向简易版)

女生的网名这么多〃 提交于 2019-11-28 06:19:41
  博主在学习安卓课程做期末程序的时候就一直想自己做API了,结果网上的教程感觉都太杂,很多都文不对题,找不到一个明确的思路,结果就只能放弃改用jdbc实现数据库交互,现在学了前端,又接触了一点nodeJS之后,才终于有了思路,最近也成功给自己放在服务器上的网站部署了API。现在就来分享一下,也顺便给自己留个备份。 ps:只是自己突然想到的做法,而且个人觉得真的是简易版,可能不标准,但亲测能用。 一、前期准备 首先声明:不懂也没关系,直接仿照代码,需要修改的地方我会用 红色 标注出来,不过mysql一定要懂一点,会写sql语句就行。 需要的下载的东西(写给完全的小白, 比如几个月前的我 ):vs code 、nodeJS、mysql 博主是在学菜鸟课程学习的nodeJS,本来也没想做API,结果学到 express、api 还有 mysql这部分时,突然灵光一闪,把api内部的语句替换成mysql不就能做一个和数据库相连的api了吗,下面是教程链接 express教程 、 RESTful API教程 、 连接 MySQL 有兴趣了解nodeJS的同学可以看一下,主要是这三个章节。没兴趣的直接跳过,下面直接上代码 二、主要操作 创建一个js文件,如 server.js 打开终端,安装express和mysql依赖 npm i express -S npm i mysql -S

nodejs搭建后台管理系统

自作多情 提交于 2019-11-28 02:50:30
nodejs搭建后台管理系统 express框架开发web项目步骤 题外话:学习nodejs的过程使我非常难以启齿,这个我觉得自己学起来好难,记得东西太多了,让我自己默写出来,简直是太难了,所以记上一次两次三次慢慢熟悉吧 。 创建项目目录 如:userManager 进入目录,执行npm init -y (初始话项目) 下载安装项目需要的依赖包 express ejs body-parser ;npm istall express(ejs,body-parser) --save 创建目录结构 public --静态资源 views --模板文件 routers --路由 config --配置文件 utils --工具文件 步骤1–加载中间件根目录下创建app.js文件 在userManager目录下创建app.js文件,主要加载中间件 var express = require ( 'express' ) ; var ejs = require ( 'ejs' ) ; var bodyParser = require ( 'body-parser' ) ; var index = require ( './routers/index' ) ; var app = express ( ) ; //appliction对象 session对象 req.session //1

【nodejs原理&源码赏析(2)】KOA中间件的基本运作原理

允我心安 提交于 2019-11-27 21:31:16
【摘要】 KOA中间件的基本运作原理 示例代码托管在: http://www.github.com/dashnowords/blogs 在中间件系统的实现上, KOA 中间件通过 async/await 来在不同中间件之间交换控制权,工作机制和 栈 结构非常相似,建议结合 《express中间件系统的基本实现》 对比学习,两个框架所基于的语法特性有区别( express 使用 ES5 的回调风格语法, KOA 使用 ES7 的扁平式异步 async/await 风格语法),但在框架基本原理上是很类似的,只是中间件写法和遍历机制稍有不同。 一. API层 初始化方法 let middleware = new MiddleWare(); 添加中间件函数的方法 //Fn为被添加的中间件,KOA中间件为async函数 middleware.use(Fn); 预处理中间件栈 //将存储于数组中的各个中间件组合为按照“先进后出”原则执行的中间件系统。 middleware.start = middleware.compose(); 启动中间件队列 middleware.start(ctx); 二. 核心类的定义 /* * KOA中间件框架的基本实现 */ class MiddleWare { constructor(){ this.queue = [] } //添加中间件函数 use(fn){

使用Nodejs 的http-proxy 模块做代理服务器的尝试

放肆的年华 提交于 2019-11-27 19:12:04
我今天突然想到一个问题,如果使用nginx 作为nodejs 的代理服务器,那么如果nodejs的应用需要进行升级的话,如何实现热更新。 第一种办法:使用nodejs搭建一个代理服务器,通过对请求的监听来判断当前的nodejs服务实例的工作情况(有多少未处理完的请求)来过滤请求,比如我有三个服务实例,1,2,3,我现在想进行升级,需要对服务进行重启,但是三个实例不能同时重启,这个时候,就需要这个代理服务器进行一个判定,通过这个代理服务器,可以看到每个实例当前的在处理的请求数量,同时也可以指定哪个进程进行断后,哪些 进程进行挂断,当然挂断的步骤是:先由代理服务器切断请求,不在给该进程发送新的请求,同时,代理服务器随时监听这些被“判死刑”的进程的请求数量的数量,如果没有请求的挂起,那就重启。当这些进程重启完成以后,这个断后的进程按照以上的步骤进行重启。 代理服务器的核心代码如下。 var http = require('http'), httpProxy = require('http-proxy'); // // Create a proxy server with latency // var proxy = httpProxy.createProxyServer(); var reqNum = 0; // 缓存目前请求的数量 proxy.on("proxyRes",()=>{

学习

半世苍凉 提交于 2019-11-27 14:49:20
一.学习   1.这周招新的事情已经接近尾声,我也开始学新的东西了Nodejs,学的时候,发现这个nodejs真的很强大,可以自己创建一个web,并且还能实现一些该有的功能,但是在学的时候,卡在了同步异步和事件驱动上面,就是很迷惑,不知道他们的步骤是怎么来的,以及他们有什么区别。今天准备把这一块视频再看一遍,总结总结。   2.时间过得真快,马上我就是学长了,就要迎来小学弟小学妹,所以在这段时间,我要好好学习知识,巩固新的知识,要不然他们问我,我不知道就很尴尬了,先把nodejs学会,抽空把JavaScript再复习一遍,有一个博主,我感觉他总结的还可以( https://www.cnblogs.com/Mtime/p/4962036.html );   3.昨天和室友一起吃饭,他在和我说二级的事,我突然意识到,如果9月份的我没考,我只能等到明年3月份,而且如果不过的话,只能大三考,还有12月份英语四级如果不报的话,大三我的压力就会大得多,发现时间真的不够用,我应该要好好规划一下,把该拿的证在大二全部拿下,大三就好好考虑自己的方向。 二.生活   1.前几天学长学姐验收我们的海报,对我们的海报提出了一点意见,说做的还行,就有一种成就感,自己做出来的东西,被人认可为还行,自己内心的荣誉感肯定会有;   2.这几天突然想买键盘和支架,就在网上物色了好多,还是拿不定主意,就去询问我哥

js与nodejs的区别 ,http协议,

我只是一个虾纸丫 提交于 2019-11-27 12:43:42
学习的原网页网址: https://www.cnblogs.com/chenliyang/p/6558756.html 1.js,运行在浏览器上的,有各大浏览器的兼容性问题,    解释型语言【程序运行才翻译,每次执行都翻译,效率低】    编译性语言【通过编译器将程序翻译成二进制,要通过编译才能运行,只能在依托的平台上运行】有差别, 2.nodejs 运行在服务器上的js语言,不存在兼容性问题。   express:第三方,安装好,直接引用,有路由和中间件构成的web框架。   http2.0:简单的请求-响应协议,它通常运行在TCP之上。客户端给服务端发消息,服务端做响应。   js与nodejs的相同点:都有自定义对象,宿主对象(bom ,dom), 3.http请求的理解:发送请求,返回数据的协议   (1)通用信息,   1.1 Request URL 请求url   1.2 request Method: 请求方法(get/post/put/delete/connect)   1.3 Status Code:响应状态码 (200/301/302/400/404/500)   (2)响应头信息   2.1 Connection:keep-alive/close   2.2 content-Type:文件类型   2.3 transfer-Encoding:chunk

简单高效的nodejs爬虫模型

痴心易碎 提交于 2019-11-27 05:29:43
这篇文章讲解一下 yunshare 项目的爬虫模型。 使用nodejs开发爬虫很简单,不需要类似python的scrapy这样的爬虫框架,只需要用request或者superagent这样的http库就能完成大部分的爬虫工作了。 使用nodejs开发爬虫半年左右了,爬虫可以很简单,也可以很复杂。简单的爬虫定向爬取一个网站,可能有个几万或者几十万的页面请求,复杂的爬虫类似google bot这样搜索引擎的蜘蛛爬虫,要每时每刻爬取互联网上最新的内容。 一般的个人开发者都是用爬虫定向爬取一些网站,然后提取一些结构化的数据,使用api接口获取数据也可以归到这一类。如果想简单的练习爬虫技术,可以尝试爬取豆瓣电影数据和书籍数据的,使用api接口和爬取html页面都能完成这个任务。 爬虫的说白了就是一个http客户端,通过http协议和远程http服务器通信,获取html页面内容或者其他的种子文件,pdf文件等等。和浏览器不同的一点就是爬虫不会把抓取的内容渲染出来,而是解析页面内容然后保存到数据库里面。 在开始学习爬虫的时候我考虑的是怎么爬取html页面内容,怎么解析html页面之间的链接规则,后来遇到了页面编码的问题。 统一utf8编码 国内网站主要是使用html和gbk这两种编码方式,解决编码有两种思路,第一个是在获取页面内容的时候根据页面的 <meta charset='gbk'>

nodejs介绍

江枫思渺然 提交于 2019-11-27 04:33:07
nodejs的真正用途 1、nodejs,一个javascript的运行环境 2、运行在服务端,作为web server 3、运行在本地,作为打包、构建工具 学习nodejs的困惑 1、nodejs运行在服务端,而非浏览器环境 2、服务端开发的思路和套路,与前端完全不一样 nodejs和javascript的区别 1、ECMAScript   定义了语法,写javascript和nodejs都必须遵守   变量定义,循环,判断,函数   原型和原型链,作用域和闭包,异步   全是一些语法的东西   不能操作dom,不能监听click事件,不能发送ajax请求   不能处理http请求,不能操作文件   即,只有es,几乎做不了任何实际的项目 2、javascript   使用es语法规范,外加web api, 缺一不可   web api包含dom操作,bom操作,事件绑定,ajax等   es语法和web api两者结合,即可完成浏览器端的任何操作 3、nodejs   使用es语法规范,外加nodejs api,缺一不可   node js api包含http,处理文件等 http://nodejs.cn/api/   两者结合,即可完成server端的任何操作 总结:   es是语法规范   nodejs = es + nodejs api   js = es + web

前后端分离架构的发展

不羁岁月 提交于 2019-11-27 02:07:39
前后端分离是现在互联网项目开发的业界标准使用方式,我们来看看它的发展。 前后端未分离时代(各种耦合) 这个时代可以叫做MVC时代,因为主要是使用MVC框架。 大致就是,所有的客户端请求都被发送给作为控制器的Servlet,它接收请求,并根据请求信息将它们分发给适当的JSP来响应。同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境。JSP可以通过直接调用方法或使用UseBean的自定义标签得到JavaBeans中的数据。需要说明的是,这个View还可以采用Velocity、Freemarker等模板引擎。使用了这些模板引擎,可以使得开发过程中的人员分工更加明确,还能提高开发效率。 在这个时期,首先是有以下的开发方式。 这种方式已经逐渐淘汰。主要原因有两点: 1.前端在开发过程中严重依赖后端,在后端没有完成的情况下,前端根本无法干活。 2.由于趋势问题,会JSP、懂Velocity和晓Freemarker等模板引擎的前端越来越少。 因此进化出了另一种开发方式,这种方式现在很多小型传统软件公司还在使用。 但是这种开发方式和它前身的开发方式有着同样的缺点: 1.前端无法单独调试,开发效率低。 2.前端不可避免会遇到后台代码,比如说JSP中的EL表达式和JSTL标签,难为前端。这种方式的耦合性太强,就算用了Freemarker等模板引擎

nodejs学习

巧了我就是萌 提交于 2019-11-26 17:38:42
一、nodejs第一个hello world代码 在任意一个目录下,如D:/nodeDemo 创建一个js文件,如hello.js,写入如下代码 function hello() { console.log('Hello World!'); } hello(); 在D:/nodeDemo 下打开cmd命令窗口,执行命令 node hello.js,控制台即可输出 Hello World! 来源: https://www.cnblogs.com/jiangwangxiang/p/11329404.html