七月第一周总结

本次总结几个点:

        1.Node.js  

        2.http/路由

        3.芒果数据库

        4.express+node.js

       5.socket/websocket/socketio

【此处声明:我用的编译器是Hbuilder    运行环境是win7系统   Node.js安装的最新版本   express等也是最新】

     一.Node.js 

           为什么要学习node.js  因为可以辅助前端开发,代替后台开发

什么是Node.js?

(后端服务器语言,之前的js在客户端写数据,不能往服务器传输数据。Ps:适用于小的项目,大项目后台不适用)

Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。

V8引擎执行Javascript的速度非常快,性能非常好。 [1]  Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效非常适合在分布式设备上运行数据密集型的实时应用

Node.js可以在不新增额外线程的....情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件轮询(event loop 重复调用判断操作是否完成)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作

什么是非阻塞I/O 模型?

非阻塞系统是指在不能立刻得到调用结果之前,函数不会阻塞当前线程,而会立刻返回的I/O系统。调用非阻塞I/O跟阻塞I/O的差别为调用之后立即返回,立即返回的是当前调用的状态。返回后,CPU的时间片可以用来处理其他事务,此时性能是提升的。

 

注意node环境是不存在使用document.getElement之类的操作的,因为dg只存在于浏览器(客户端),是dom对象,而此处的环境是服务器

        NPM是随同nodejs一起安装的包管理工具,常见命令   npm  install,npm   uninstall, update  ,  list 等

package.json列出详细信息node的包 管理工具 当有了package.json 加上

install 安装,install -g 全局安装 install -dev 本地依赖 uninstall 卸载 list 列出详细信息

 

GitHub上有NW源码,用于搭建桌面应用程序,比如PC端微信

 

创建服务器

           找到你的项目所在的文件夹,然后按住shift键,运行命令符,输入 npm  init  随后的一系列命名都直接按回车键默认,然后安装npm install jquery --save-dev   ,然后在编译器HB中写一个js文件server.js,内部代码如下

//引入http模块
const http = require("http");
http.createServer((req,res)=>{
res.writeHeader(200,{"content-type":"text/html;charset=utf-8"});
res.write("bbb");
res.end();
}).listen(8000,"127.0.0.1");

console.log("服务器已开启,地址为127.0.0.1:8000");

 

text/html 向网络中显示解析后的代码

text/plain 输入的内容为文本直接显示,不解析为代码

 

最后在命令运行窗口输入node server  回车

 

此时服务器就创建好了,测试时res.write( )输入什么就会在服务器显示什么,但是每次都需要重新运行一遍代码npm server  然后再刷新页面。这样是很麻烦的,所以我们要再加一个热更新,热更新就是可以不用重复执行node,自动更新内容并且刷新页面(supervisor)。好了,现在你彻底建好服务器了。

 

如果显示的是buff,如何从字符串显示成文字?用toString方法

关于nodejs的详细用法可以参考他的官方网站上的API接口文档,网上一搜就有,好吧我人好,给你链接。

http://nodejs.cn/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost

      tips:

 

在文件夹创建js文件,只能一个一个创建,但是可以用for循环实现多个文件的创建

            安装和测试的时候可能会报各种你懵逼的错误,有的错误是标点符号的输入错误(平时敲代码认真一些,仔细一些避免可避免的错误,会省很多时间和精力去排错和重复工作),有的错误是配置环境时出现的不可预知的错误(这种没办法的,把之前装的东西删掉重新装就行了,我在以前配置gulp环境的时候,坚信自己没错,各种试图解决安装过程中的bug,事实证明是徒劳也没有必要。删掉重新装,有效还效率高)。基本上我遇到的错误就是这两类,如果你遇到什么别的bug,如果能分享给我,我非常感谢。

代码大概是这个世界上最忠贞又奇怪的事情,只要输入正确的指令,他就一辈子不变,但是有时又会出现不可预知的莫名其妙的错误,但是无论如何,要一直爱他

 

二.   http/路由  

       一部分中咱们创建了服务器,在实际开发中仅仅有服务器显然是不够的,还要有登录注册,主页,商品列表页,购物车,关于我们等等这些功能性页面。如何实现页面之间带着用户信息的跳转呢,这就要看路由和Http的相关协议了,建议初学者好好查一些计算机的协议知识。

       http的方法什么的,在nodejs的API文档里有,看了就知道怎么用了,大量实例都在里面,你也可以找一些接口自己串起来去用一下,

接口的实现思路,我在浏览器只能访问A服务器,但是需从B服务器获取资源,于是我让A服务器去B服务器搞资源,然后我就可以在A服务器上访问到资源了

      路由:

路由模板

var http = require("http");
var router = require("./router.js");
//var url = require("url");
var server = http.createServer(function(req,res){
if(req.url != "/favicon.ico"){

var surl = req.url.slice(1);//url.parse(req.url).pathname.replace(/\//,"")

res.writeHead(200,{"content-type":"text/html;charset=utf-8","Access-Control-Allow-Origin":"*"});
try{
router[surl](req,res);
}catch(e){
router["404"](req,res);
}
//res.end();
}
});
 

server.listen(8000);

 

基本思路:

路由做一个判断,判断走页面路由还是页内路由,查询路由,ajax调接口后台取数据,

页面路由: login regist路径localhost:8000/regist 跳转

页内路由 :login-api regist-api路径,比如点注册后,localhost:8000/regist/abcd?=123,之类的表示某一个用户注册了,再去数据库查看是否已存在,返回1或者0,然后提示信息注册/登陆成功与否

注册成功就把数据转成字符串然后存数据库,再跳转到登陆

 

tips:

网上找到接口不一定可以用,因为没有jsonp的环境,只能看,无法操作。想操作要进行一些跨域

 

利用jsonp从后台跨域请求数据,因为异步先执行最后,所以有数据获取不到会报错,一开始报错无法跨域,调整一下res.end( )的位置,错误应该就可以解决,啊,这要看你的代码结构了,我理解学习的不够透彻,只能从我已知的部分给出解释,仅作参考。

路由学习网站

http://www.expressjs.com.cn/guide/routing.html

 

 

浏览器访问服务器,服务器返回

结合ajax,readfile读取文件

浏览器向网上的资源发出请求,获取资源,回调函数res ondata 给服务器,服务器给前端

 

三.  芒果数据库  mongodb

 

芒果数据库 这几年使用范围比较大,阿里巴巴,京东等。增删改查的操作相对而言比mysql简单

非关系型数据库

 

非关系型数据库

芒果数据库安装流程

1.双击exe安装文件

 

2.勾选同意选项,下一步,然后选择coustom,下一步,然后在D盘的根目录下建一个名为mgdb的文件夹,将安装路径改为D/mgdb

3.在D盘的根目录下建一个名为data的文件夹,再在data文件夹里建一个名为db的文件夹

4.进入mgdb文件夹 --->bin文件夹 ---->mongod.exe 双击运行不要关闭 ---->mongo.exe 双击运行不要关闭 以后运行芒果数据库也是这个顺序打开

 

5.在mongo.exe的运行环境中显示的url(127.0.0.1:27017),在浏览器打开,出现以下内容说明安装成功

     It looks likes you are trying to access MongoDB over HTTP on the native driver  port.

 

 

具体怎么用什么的,去看官网上的使用手册,网上啥都有,比如什么语法啊,如何链接nodejs啊,做测试挺有意思的,就是你得一直认真,稍微敲错一个逗号或者引号,那就得重新输入,没有复制粘贴

     

 

 

 

 

将用户注册的数据转化为字符串存在数据库

 

 

 

四. Node.js Express 框架

 

好像这个没啥好讲的,完整的安装教程什么的,照着一步步做就行,遇到安装中显示的代码跟你的安装不一样的,不要慌,那是nodejs版本不同的缘故,只要没报错,你就继续走流程就行。

下面这个也得安装和学习,因为他们都是搭配使用效果更好的,不知道什么时候开发可以一个软件就搞定,做个项目装一堆插件的,发愁。。。光配置环境都得等好久了

 

 

安装好了以后,创建一个新的项目,大概长这样

 

 

静态在 public 数据在routs html 在views

后缀变化而已,写的是html。HB中没有创建ejs文件,通过新建 --->自定义文件 写上后缀名ejs即可

 

五    socket  实时双工通讯  聊天的三种写法

 

了解一下 socket是什么东西

 

单工,半双工(a给b可以,b不能给a。消息传递结束后,b给a可以,a给b不行。该模式会被逐步淘汰),双工 三种通讯模式

 

pid在本地唯一,在网络上不唯一。所以传递信息 需要协议名加主机名(域名)加端口号

tcpip和http协议 查一堆协议 tcp 等等

http (应用层 和用户打交道的) 服务器被动接受信息,没有请求我就不响应

qq服务器,A给B发送信息,A发的先到服务器,服务器做出响应后发给B,此处B是没有任何请求的,但是有收到信息

node.js net模块

 

 

还是老话,具体语法看文档去

OA系统 钉钉

登录注册,发消息 不同客户端要求不同

不同的客户端怎么区别和获取他们说的话

开启新的一个客户端无需再写一个新的socketClient.js文件,在项目所在文件夹打开nodejs命令窗口再运行node socketClient 一个新的命令窗口 就是一个新的客户端了(好神奇=。=)两个不同的客户端之间可以实现互相聊天

 

 

 

 

每发送一句话,都要遍历一遍客户端,找出谁说话的。客户端代码

 

了解一下这个,第二种写实时通讯的方法。第三种是socketio也是网上一搜就有网站有教程,在此推荐一下,不做具体搬运

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值