• nodejs(1)


    node.js 是一个让javascript运行在服务端的开发平台

    node.js的环境部署

    1.下载安装包

     https://nodejs.org/en/

    安装后 打开cmd的dos窗口

    运行node 

       console.log('success')

    编写一个demo.js并保存到nodejs的安装目录里

      consloe.log('学习nodejs')

    在dos里运行demo.js 可以看到输出的学习nodejs

    node.js命令行工具

    node -v 查看版本

    node -e ‘console.log("hello word")’;  直接运行

    node  直接进入编译模式

       console.log('1111')

    第一行是输入、第二行是返回值

    建立HTTP服务器

    1 var http = require('http');
    2 http.createServer(function(req,res){
    3     res.writeHead(200,{'Content-Type':'text/html'});
    4     res.write('<h1>nodejs</h1>');
    5     res.end('<p>视频PCAT</p>');
    6 }).listen(2000);

    保存为demo2.js并用cmd来运行

    在浏览器中输入:localhost:2000

    回调函数

    1.异步式读取文件

            

    var fs = require('fs');
    fs.readFile('file.txt','utf-8',function(err,data){
    	if(err){
    		console.log(err);
    	}else{
    		console.log(data)
    	}
    });
    console.log('end.');
    结果:
     end.
     Contents of the file.
    

    在nodejs目录里编写一个file.js 

         

    1 var fs = require('fs');
    2 fs.readFile('file.txt','utf-8',function(err,data){
    3     if(err){
    4         console.log(err);
    5     }else{
    6         console.log(data)
    7     }
    8 });
    9 console.log('end.');

    在nodejs目录里创建一个file.txt文件并写入hi,i'm a file.txt

    打开cmd 执行file.js

    同步式读取文件

    var fs = require('fs');
    var data=fs.readFileSync('file.txt','utf-8');
    console.log(data);
    console.log('end.');

    显示如下

     事件

    1.普通事件的对象  (在nodejs目录里创建一个event.js)

    //声明事件对象
    var EventEmitter = require('events').EventEmitter;
    var event = new EventEmitter();
    //注册事件
    event.on('some_event',function(){
        console.log('这是一个自定义的事件');
    })
    //在1s时间之后触发事件
    setInterval(function(){
        event.emit('some_event');
    },1000);

    显示结果如下:

    node.js的事件循环机制

        node.js程序是由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数。

    如何使用自定义事件呢

        事件的回调函数在执行的过程中,可能会发出IO请求或直接发射(emit)事件,这I型完毕后再返回事件循环。

    node.js中的模块和包的应用:

     1.在nodejs安装目录中创建一个模块 model.js

       

    var  name;
    exports.setName=function(theName){
        name = theName;
    }
    exports.sayHello=function(){
        console.log('hello'+name);
    }

    2.在nodejs安装目录中创建一个模块 getModel.js

    var myModel = require('./model');
    myModel.setName('hehe');
    myModel.sayHello();

    node.js中require不能重复加载模块 只能包含一次

      我们把一个对象封装到模块中引入模块 来实现多次调用

    例:在node的安装目录中创建一个Sing.js

    function hello(){
        var name;
        this.setName = function(theName){
            name =  theName;
        }
        this.sayHello = function(){
            console.log('hello'+name);
        }
    } 
    module.exports=hello;

    在node的安装目录中创建一个getSing.js

    var hello = require('./Sing');
    var he = new hello();
    he.setName('hhehe');
    he.sayHello();
    var he1 = new hello();
    he1.setName('aaaa');
    he1.sayHello();

    包的创建

    创建一个package包

     1. package.json必须在包的顶层目录下

        package.json里面代码

    {
        "main" : "./lib/index.js"
    }

     2.创建bin文件夹  里面放二进制文件

     3.创建doc文件夹  里面放文档

     4.创建test文件夹   里面放测试的

     5.创建lib文件夹  放一个index.js

       index.js里面代码:

    exports.sayHello = function(){
        console.log('this is a easy package');
    }

    具体package文件夹下的所有文件

    在node安装目录里创建一个getPackage.js

       getPackage.js里面的代码:

    var pac = require('./package');
    pac.sayHello();

    在cmd下测试如下:

     node.js在调用某个包的时候。会检查包中的package.json文件中的main字段,将其作为包的 接口模块,如果package.json或main字段不存在,会尝试寻找index.js或index.code作为包的接口。

    package.json的规范属性

      如何用包管理器

     1.获取一个包

      npm [install/i] [package_name]

     例如:安装express包

      npm i express

     卸载包

       npm uninstall 报名 【-g】

    查看当前报名

    npm list

    帮助链接:http://www.cnblogs.com/bluefrog/archive/2012/08/14/2639085.html

    2.本地模式和全局模式

     npm在默认情况下会从http://npmjs.org搜索或下载包 将包安装到npm_modules

    a.默认是npm install包名 作为本地模式

    b.全局模式

     npm install -g 包名

    用cmd创建包里里面的package.json

    安装包

    查看

    测试

  • 相关阅读:
    【足迹C++primer】32、定制操作_2
    pom文件miss artifact com.sun:tools:jar:1.5.0:system问题
    cents上运行wget报错:unable to resolve host address
    怎样定义函数模板
    06006_redis数据存储类型——String
    雷林鹏分享:C# 类型转换
    雷林鹏分享:C# 运算符
    雷林鹏分享:C# 循环
    雷林鹏分享:C# 判断
    雷林鹏分享:C# 方法
  • 原文地址:https://www.cnblogs.com/chenchenphp/p/5560842.html
Copyright © 2020-2023  润新知