学习 NodeJS 7-Node

7 Node

7.1 Linux环境搭建

  • wget https://npm.taobao.org/mirrors/node/v6.10.3/node-v6.10.3-linux-x64.tar.xz
  • xz -d node-v6.10.3-linux-x64.tar.xz / tar -xzvf node-v6.10.3-linux-x64.tar.gz(解压)
  • tar -xvf node-v6.10.3-linux-x64.tar(解压)
  • ln -s /node-v6.10.3-linux-x64/bin/node /usr/local/bin/node (建立一个软连接)
  • ln -s /node-v6.10.3-linux-x64/bin/npm /usr/local/bin/npm(ln=link)

LTS:long time suppose(长期支持的版本,一般三年内是有效的)

比较坑的一种方法:

  • sudo apt-get install nodejs
  • sudo apt-get install npm

7.2 创建httpserver

node特点:

  1. 基于Chrome V8引擎
  2. 单线程
  3. 使用JavaScript开发后端代码
  4. 非阻塞的IO

演示Common规范: 1,通过module.exports来创建;2,通过exports.对象来创建

// 第一种创建方式:module.exports
module.exports = {
  userName:"Jack",
  sayHello(){
    return "hello"
  }
}

// 第二种创建方式:exports.对象
exports.userName = "Tom";
exports.sayHello = function () {
  return "World"
}

// 引入调用
let user = require('./User');
console.log(`userName:${user.userName}`);
console.log(`I'm ${user.userName},I say ${user.sayHello()}`)

创建一个Http Server:

let http = require("http");
let url = require('url');
let util = require('util');

let server = http.createServer((req,res)=>{
  res.statusCode = 200;
  res.setHeader("Content-Type","text/plain;charset=utf-8");

  console.log(`url:${req.url}`);  // 字符串
  console.log(`parse:${url.parse(req.url)}`);  // [object Object]
  console.log(`inspect:${util.inspect(url.parse(req.url))}`) // 将对象以字符串输出

  res.end(util.inspect(url.parse(req.url)));
});

server.listen(3000,'127.0.0.1',()=>{
  console.log("服务器已经运行,请打开浏览器,输入:http://127.0.0.1.3000/ 来访问")
})

创建一个Web容器,可以访问到HTML内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h2>测试一下能否访问到!</h2>
</body>
</html>
let http = require("http");
let url = require('url');
let util = require('util');
let fs = require('fs');

let server = http.createServer((req,res)=>{
  // res.statusCode = 200;
  // res.setHeader("Content-Type","text/plain;charset=utf-8");

  var pathname = url.parse(req.url).pathname;
  console.log("file:"+pathname.substring(1));
  fs.readFile(pathname.substring(1),function (err,data) {
    if(err){
      res.writeHead(404,{
        'Content-Type':'text/html'
      })
    }else {
      res.writeHead(200,{
        'Content-Type':'text/html'
      })
      res.write(data.toString());
    }
    // end需要在文件读取内结束。
    res.end();
  })

});

server.listen(3000,'127.0.0.1',()=>{
  console.log("服务器已经运行,请打开浏览器,输入:http://127.0.0.1.3000/ 来访问")
})

Http模块客户端演示:

let http = require('http');

let util = require('util');

http.get('http://www.imooc.com/u/card',function (res) {
  let data = '';
  res.on('data',function (chunk) {
    data += chunk;
  });
  res.on('end',function (){
    let jsonpToJson = data.split('(')[1].split(')')[0];
    let result = JSON.parse(jsonpToJson);
    console.log('resultAll:'+util.inspect(result));
    console.log('resultMsg:'+result.msg);
  })
})

在这里,我来说一下ES6的let和var、const的区别:

JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中新增了块级作用域。 
块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。

  1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
  2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
  3. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

7.3 通过node加载静态资源

7.4 搭建基于express框架的运行环境

  • 安装express generator生成器
  1. 查看express版本:express --version(express -v是视图的意思,这里和其他软件的情况不一样)npm install express --save;
  2. 安装完express generator生成器才能查看版本号:npm install -g express-generator。
  • 通过生成器自动创建项目

     创建一个express框架项目:express server  创建出一个文件包含:bin、public、routes、view、app.js、package.json

  • 配置分析
  1. bin:可执行文件,www对一些事物封装,有用的只有一句话,就是创建了一个server;
  2. public:静态资源;
  3. routes:路由;
  4. views:视图(.jade语言);
  5. app.js:入口;
  6. package.json:配置,可以与外面的合并。
// 如何将jade改成html
var ejs = require('ejs');
app.engine('.html',ejs.__express);
app.set('view engine', 'html');

 

 

 

 

 

 

 

 

 

 


 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值