node

node 01 天

node.js 欢迎您,来到后台的世界。

学node.js 前的一些话

    前端:主要关心的是交互。数据的展示(页面)。
    后端:主要关系的数据。

1.什么是node.js

 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
 Node.js 的包管理器 npm,是全球最大的开源库生态系统。

2.node.js 的特点

单线程
非阻塞I/O
事件驱动

2. node.js 适合什么样的业务

    高并发  大量 I/O 业务      
    考试系统
    表单收集    
    聊天系统            
    图文直播

3.cmd 基本的命令

    win + r 打开运行窗口 在运行里输入 cmd 执行 就能打开 cmd 面板

    d:  切换盘符  切换到d 盘
    
    cd  进入目录
        .   当前目录
        ..  上级目录

    dir  查看当前目录下所有文件  

    cls  清屏

    tab  补全

    exit 退出

    上下键切换  输入的历史记录

4. 安装 node.js

    命令里操作

    查看 node.js 版本号  
        node -v 

    node --help 帮助

    npm -v   查看 npm 的版本号        

    npm install 模块名

    例:
        npm install jquery   // 默认安装最新的版本
        npm install jquery@1.8.3   // 安装指定版本的模块

5. node.js 环境

    cmd 里  

    node 执行

    ctrl + c  退出

    执行某个文件

    node 文件的路径

6. 模块

    node.js 以模块为单位划分所有的功能。并提供一套完善的模块加载机制。

7. 自己定义模块

    1. 直接通过 exports 暴露属性和方法
        // 暴露属性
        exports.pinpai = 'abc';
        // 暴露方法
        exports.fanghua = function(){
            console.log('我已经开启防滑模式');
        }

    2. 暴露一个 暴露对象
        function Hello() { 
            this.name = 'jack';
            this.sex = 18;
            this.say = function(){
                console.log('我今年18岁');
            }
        }; 
        // 暴露对象
        module.exports = Hello; 

        使用模块    
            // 引入 hello 模块
            var hello = require('./hello');
            var myhello  = new hello();
            console.log(myhello.name);
            myhello.say();

    // 注意:
    自定义模块 引入 的时候  require('./模块路径') 路径要完整, ./ 不能省略。

9. 引入模块

    require('模块路径')

8. 系统模块

8.1 http 模块

// 引入 http 模块
var http = require('http');

// 创建服务
http.createServer(function(req,res){
    /*
        req     request    请求的参数
        res     response   响应的参数
    */  

    // 响应头信息
    res.writeHead(200,{"content-type":"text/html;charset=utf-8"});

    // 响应文本
    res.write('<h1 style="color:red">淫荡的一上午要结束了</h1>');

    // 响应结束
    res.end('<p>我也饿了<p>');

// 监听端口号
}).listen(3000)

node 02 天

linux 简单指令
    ls      显示文件或目录
        -l   详细信息
        -a   显示所有文件 包括隐藏文件

    cd      切换盘符        

    mkdir   创建目录    

    touch   创建一个空文件

    echo    创建一个带内容的文件
        例:  echo '文件内容' > 文件路径(文件名)
              echo 'hello wrokd' > 1.txt

    cat     查询文件内容

    编辑文件  vi  

    wc      统计文本的字数

    cp       拷贝

        cp  file1 file2;

    rm      删除文件
        -r  递归删除
        -f  强制删除


    rmdir   删除空目录

buffer(缓冲区)

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

简单的操作:

    //              存储的字节
    var buf = new Buffer(9);

    buf.write('你好帅');

    console.log(buf.toString());

fs 文件模块

    目录 操作
        创建目录
        删除目录
        重命名目录
        读取目录


    文件操作:
        创建文件
        查看文件信息
        删除文件
创建目录
fs.mkdir('test',function(err){
    // err  错误信息的参数  如果 值是 null  成功
    console.log(err); //null
    if(err){
        console.log('操作失败') 
    }else{
        console.log('操作成功') 
    }
})
删除目录
fs.rmdir('test',function(err){
    if(err){
        console.log('操作失败') 
    }else{
        console.log('操作成功') 
    }   
})
重命名
fs.rename('test','abc',function(err){
    if(err){
        console.log('操作失败') 
    }else{
        console.log('操作成功') 
    }   
})
读取目录
// 读取目录
fs.readdir('abc',function(err,data){
    if(err){
        console.log('操作失败') 
    }else{
        console.log(data);
    }
})
创建文件
fs.writeFile('test.txt','你看我吊不?',function(err){
    console.log(err);
})
查看文件信息
fs.stat('test.txt',function(err,data){
    if(err){
        console.log('操作失败')
    }else{
        console.log(data);
    }
})
删除文件
    // 删除文件
    fs.unlink('test.txt',function(err){
        if(err){
            console.log('操作失败')
        }else{
            console.log('操作成功');
        }
    })
同步异步区别
    // 异步读取
    fs.readFile('input.txt',function (err, data) {
       if (err) {
           console.error(err);
       }else{
           console.log("异步读取: " + data.toString());
       }
    });

    console.log('ok');
    */

    // 同步读取
    var data = fs.readFileSync('input.txt');

    console.log("同步读取: " + data.toString());

    console.log("==========程序执行完毕。==========");

url

    var urlStr = 'http://www.baidu.com/index.php?name=jack';

    //  把 url 格式成对象,

    var res = url.parse(urlStr);
    // console.log(res);
    // console.log(res.query);
    /*
        Url {
          protocol: 'http:',
          slashes: true,
          auth: null,
          host: 'www.baidu.com',
          port: null,
          hostname: 'www.baidu.com',
          hash: null,
          search: '?name=jack',
          query: 'name=jack',
          pathname: '/index.php',
          path: '/index.php?name=jack',
          href: 'http://www.baidu.com/index.php?name=jack' 
         }
    */

    var urlObj = {
        protocol: 'http:',
        host: 'www.google.com',
        search: '?key=美女',
    }

    var myurl = url.format(urlObj);

    console.log(myurl)  //==> http://www.google.com?key=美女

path

    var url = 'http://www.baidu.com/admin/userlist/index.php';

    // 获取路径
    var dirname = path.dirname(url); 
    console.log(dirname);  // =>  http://www.baidu.com/admin/userlist


    var fileName = path.basename(url);
    console.log(fileName);  // =>  index.php

    var extName = path.extname(url);
    console.log(extName);   // .php  扩展名

querystring

    // 例子 1:
    var qs = require('querystring');

    var data = 'username=jack&age=18&sex=男';

    var res = qs.parse(data);  // =>  { username: 'jack', age: '18', sex: '男' }
    console.log(res);
    console.log(res.sex)


    // 例子2:
    var qs = require('querystring');

    var data = 'username=%E5%94%90%E4%BC%AF%E8%99%8E&age=18&sex=男';

    var res = qs.parse(data);  // =>  { username: '唐伯虎', age: '18', sex: '男' }

    console.log(res);
    console.log(res.sex)

golbal

    // 当前运行文件的路径
    console.log(__filename);  // => C:\phpStudy\WWW\H5_28\node03\global\02.js

    // 目录名
    console.log(__dirname);  // => C:\phpStudy\WWW\H5_28\node03\global


    // var i = 0;
    /*setInterval(function(){
        console.log(++i);

    },1000);

    */

    setTimeout(function(){
        console.log('ok')
    },3000)

路由

// 引入 http 模块
var http  = require('http');

// 引入文件模块
var fs = require('fs');

// 创建服务
http.createServer(function(req,res){
    /*
        req 请求的参数
        res 响应的参数
    */

    console.log(req.url);

    if(req.url=='/login'){
        // 读取文件
        fs.readFile('./html/login.html',function(err,data){
            if(err){
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end('读取页面失败');
            }else{
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end(data);
            }
        })

    }else if(req.url == '/show'){

        // 读取文件
        fs.readFile('./html/show.html',function(err,data){
            if(err){
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end('读取页面失败');
            }else{
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end(data);
            }
        })

    }else if(req.url == '/'){
        // 读取文件
        fs.readFile('./html/index.html',function(err,data){
            if(err){
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end('读取页面失败');
            }else{
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end(data);
            }
        })


    }else if(req.url=='/404.jpg'){

        // 读取图片
        fs.readFile('./html/404.jpg',function(err,data){
                // 响应的头信息
                res.writeHead(200,{'content-type':'image/jpg'});
                // 响应模版
                res.end(data);
        })

    }else if(req.url == '/style.css'){

        // 读取文件
        fs.readFile('./html/style.css',function(err,data){
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/css;charset=utf-8'});
                // 响应模版
                res.end(data);
        })

    }else{
        // 读取文件
        fs.readFile('./html/404.html',function(err,data){
            if(err){
                // 响应的头信息
                res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end('读取页面失败');
            }else{
                // 响应的头信息
                res.writeHead(404,{'content-type':'text/html;charset=utf-8'});
                // 响应模版
                res.end(data);
            }
        })      
    }

// 监听端口
}).listen(3000)

npm 使用

npm init   初始化  会给我们生成 package.json

npm install  安装 package.json 文件里 需要依赖 的所有模块

npm install 模块名 --save  // 把下载的模块 保存到  package.json 文件里 需要依赖的  dependencies 属性里

// 查看 模块 的所有版本
npm view 模块名 versions

  npm  下载模块

ejs 模版引擎

    

前端的 bootstrap

express node.js 框架

路由
    // 引入 express 框架
    var express = require('express');

    var app = express();

    // express 路由
    app.get('/admin',function(req,res){
        res.send('这是后台');
    });

    // 首页
    app.get('/',function(req,res){
        res.send('首页')
    })

    // 通配
    app.get('*',function(req,res){
        res.send('404');
    })

    app.listen(3000);

转载于:https://www.cnblogs.com/chengaiying/p/7099205.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值