nodejs的学习
nodejs 环境变量的配置
1.在 安装文件下创建两个文件夹 node_global 和 node_cache
2. 执行下面命令
npm config set prefix "D:\soft\install\nodejs\node_global"
npm config set cache "D:\soft\install\nodejs\node_cache"
3. 添加系统变量:D:\soft\install\nodejs\node_global\node_modules
nodejs 就是使用js来编写服务端的程序.它的特性是(单线程 速度快 耗内存多 异步 事件驱动)
(
一些技术的解决方案:默认情况下是
1.不支持多核,可以使用cluster 进行解决
2.默认不支持服务器集群,可以使用node-http-proxy可以解决
3.可以使用nginx进行负载均衡,nginx负责静态,动态有node.js负责
4.forever或者node-cluster 实现灾难恢复
)
对框架的选择:使用express框架 超前框架使用es6语法koa sails框架
笔记
例子:
var http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{'content-Type':'text/html;charset=utf-8'});
if(request.url !=="/favicon.ico"){//清除第二次访问
console.log("访问");
response.write("hello world");
response.end("访问结束"); //http 响应的结束,如果不写,则浏览器一直在转,但是会产生两次访问
}
}).listen(5555);
1.可以使用require进行模块的导入
2.方法默认导出使用,module.exports = fun2 进行方法的导出,这种只支持导出一个
3.支持多个输出,使用匿名函数.
module.exports{
fun2:function(){
},
fun3:function(){
}
}
4.使用字符串调用方法(otherfun.fun2()相当于otherfun['fun2']()); //这样能够灵活使用方法的调用
5.创建一个模块
function User(){
this.id;
this.name;
this.enter = function(){
console.log("都能够进入大厅")
}
}
6.导入后,可以使用上面, user = new User();
7.继承的使用
var User = require(./User);
function Teacher(id,name){
User.applay(this,[id,name])
}
8.路由require("url");属于自带的(var pathname = url.parse(request.url).pathname 可得到路由的名称,根为/,去除了端口前缀
替换前面的/,pathname = pathname.replace('/\//','');这时候,就可以和4进行结合使用了
)
9.文件的读取
var fs = require('fs');
module.exports = {
readFileSync:function(path){//同步读取数据
var data = fs.readFileSync(path,'utf-8');
console.log(data);
},
readFile:function(path){ //异步执行
fs.readFile(path,function(err,data){
if(err){
console.log(err)
}else{
console.log(data.toString());
}
})
}
}
为了避免异步请求出现的差错(因为程序没有执行完,但是已经结束的问题),一般使用闭包的形式,一般传入的为函数
recall fucntion(data){
response.write(data);
response.end("");
}
readFile:function(path,recall){ //异步执行
fs.readFile(path,function(err,data){
if(err){
console.log(err)
}else{
console.log(data.toString());
recall(data)
}
})
}
10.文件的写入
writeFileSync:function(path,data){//同步数据
var data = fs.writeFileSync(path,data);
console.log("同步文件成功");
},
writeFile:function(path,data,recall){ //异步执行
fs.writeFile(path,data,function(err){
if(err){
throw err;
}
console.log("保存成功")
recall("保存成功")
})
}
11.对图片的进行操作
图片使用二进制流的方式进行.需要设置成response.writeHead(200,{"Content-Type":"image/jpeg"});
图片的读取
readImge:function(path,response){ //异步执行
fs.readFile(path,'binary',function(err,filedata){//携带一个binary,表示二进制文件
if(err){
console.log(err)
}else{
resonse.write(filedata,'binary')
console.log(data.toString());
}
})
}
nodejs的学习的更多相关文章
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- nodejs模块学习: webpack
nodejs模块学习: webpack nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实 ...
- NodeJs入门学习(一)
NodeJs是针对前端工程师向web后端深入理解的一门很好的语言. 首先,记录NodeJS几大特性,后续补充: 一.Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. ...
- NodeJs开发学习目录
1.Nodejs基本概念及Nodejs.npm安装测试[2014-06-06] 2.开发工具简介(主要介绍Sublime Text使用) [2014-06-06] 3.Sublime text插件安装 ...
- nodejs模块学习: connect解析
nodejs模块学习: connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决 ...
- nodejs模块学习: connect2解析
nodejs模块学习: connect2 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来 ...
- nodejs模块学习: express-session 解析
nodejs模块学习: express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创 ...
- nodejs基础学习1
ES6常用新语法 ES6新语法 什么是ES6? 由于JavaScript是上个世纪90年代,由Brendan Eich在用了10天左右的时间发明的:虽然语言的设计者很牛逼,但是也扛不住"时间 ...
- NodeJS入门学习
node.js 概念:是一个由c++编写的,本质上是一个javascript的运行环境,他可以让js代码运行在服务器端. node可以解析JS代码(没有浏览器安全级的限制) 提供系统级别的API: 1 ...
- nodejs入门学习笔记一——一个完整的http路由服务实现
开始学习nodejs! 参考书籍:The Node Beginner Book ,所有问题和讨论都围绕本书. 1.学习nodejs需要具备的基础知识: js基本语法,基本上写过前端的都能满足,原生js ...
随机推荐
- bzoj3612: [Heoi2014]平衡
首先不可重的整数规划是fi,j=fi-1,j-i+fi,j-i的 然后现在加了一个限制,分成的数不能超过n,那么对于拼大于n的数的时候多减一个fi-1,j-n-1 接下来是优化代码暴露我自带巨大常数的 ...
- bzoj 4521 电话号码
题目大意: 求$[L,R]$中,满足不同时存在4和8且有连续三个一样的个数 思路: 我为什么要记忆化搜索里带-1啊 我可真是个** 直接记忆化搜索记前两位是否有4,8以及是否满足连续 #include ...
- 【BZOJ 2456】 mode
[题目链接] 点击打开链接 [算法] 此题初看是大水题,只需调用std :: sort即可 但是,n最大500000,显然会超时 而且,内存限制1MB,我们连数组也开不了! 那怎么做呢 ? 我们发现, ...
- 浅入分析和Linux内核相关的文件夹/proc和/sys .
近来文章被踩的厉害,我只想把自己从马哥学的知识自己总结下发到博客里,但是没想到昨天一篇文章刚发一上午被踩了9次...如果您真的觉得我的文章很烂,请告诉我原因,不胜感激. 这星期,马哥讲了关于Linux ...
- bzoj 4596
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 257 Solved: 152[Submit][Sta ...
- win7下IIS7.0虚拟目录不存在的问题
问题:在IIS7.0下选中虚拟目录,右边浏览应用程序下,自动打开浏览器找开虚拟目录下的网站,但过一会什么都没有改变,再一次右边浏览应用程序,就提示 “虚拟目录不存在”. 解决方法:右键网站或下面的虚拟 ...
- bzoj 4245: [ONTAK2015]OR-XOR【按位贪心】
知道按位贪心但是不知道怎么贪-- 求一个a的异或前缀和s,然后按位从大到小贪心,ans的当前位能为0的条件是s中有>=m个位置这一位为0且没有flag,并且s[n]的这一位为0 如果符合要求,那 ...
- SGU 176 Flow construction【有上下界最小流】
正好考到了所以翻一些题来做--猛然发现搞了半个月的网络流却没做两道上下界(不过这种题好像是比较少233) 首先建立超级源汇ss,tt,没限制的边照常连,对于有限制的边(u,v,mn,mx),连接(u, ...
- SpringMVC异步调用,Callable和DeferredResult的使用
Callable和DeferredResult都是springMVC里面的异步调用,Callable主要用来处理一些简单的逻辑,DeferredResult主要用于处理一些复杂逻辑 1.Callabl ...
- hdu---------3189-------------------
水体一个,但是这种做题的方法值得发扬光大............ Just Do It Time Limit: / MS (Java/Others) Memory Limit: / K (Java/O ...