怎样实现安装Node.js并启动本地服务

怎样实现安装Node.js并启动本地服务,第1张

这次给大家带来怎样实现安装Nodejs并启动本地服务,实现安装Nodejs并启动本地服务的注意事项有哪些,下面就是实战案例,一起来看一下。

1、下载安装包:

下载地址:https://nodejsorg/en/download/,根据自己电脑的配置下载相应的windows64位安装包,下载完成后,进行安装。

2、检查是否安装成功

安装完成后,打开命令行窗口,检查是否安装成功,如下图所示,键入node -v出现nodejs的版本,键入npm -v出现npm的版本,说明两者均已安装成功。

3、配置环境变量

由于我的电脑之前安装过nodejs,所以需要检测一下是否配置了环境变量,打开命令行,输入命令“path”,输出结果中可以看到环境变量已经包含了E:\nodejs\

4、创建一个应用

在创建应用“Hello World”前,先了解一下nodejs应用由哪几部分组成:

引入required模块:我们可以使用 require 指令来载入 Nodejs 模块。

创建服务器:服务器可以监听客户端的请求。

接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

下面开始创建nodejs应用:

(1)引入require模块

我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

var http = require("http");(2)创建服务器

接下来我们使用httpcreatServer()方法创建服务器,并使用listen()方法绑定8080端口。函数通过request,response参数来接收和响应数据。实例如下:

var http = require('http');

httpcreateServer(function (request, response) {

// 发送 HTTP 头部

// HTTP 状态值: 200 : OK

// 内容类型: text/plain

responsewriteHead(200, {'Content-Type': 'text/plain'});

// 发送响应数据 "Hello World"

responseend('Hello World\n');

})listen(8080);

// 终端打印如下信息

consolelog('Server running at http://127001:8080/');使用node命令执行以上代码,结果如下图:

打开浏览器访问http://localhost:8080/,可以看到写着”Hello World”的网页,如下图:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样操作vue中$emit 与$on父子与兄弟组件通信

如何使用JS事件绑定、事件流模型

前面已经学习了WebSocket API,包括事件、方法和属性。详情:WebSocket(二)--API  WebSocket是基于事件驱动,支持全双工通信。下面通过三个简单例子体验一下。

简单开始

1安装node。/  

2安装ws模块

ws:是nodejs的一个WebSocket库,可以用来创建服务。

3serverjs

在项目里面新建一个serverjs,创建服务,指定8181端口,将收到的消息log出来。

var WebSocketServer = require('ws')Server,

wss = new WebSocketServer({ port: 8181 });

wsson('connection', function (ws) {

consolelog('client connected');

wson('message', function (message) {

consolelog(message);

});

});

4建立一个clienthtml。

在页面上建立一个WebSocket的连接。用send方法发送消息。

var ws = new WebSocket("ws://localhost:8181");

wsonopen = function (e) {

consolelog('Connection to server opened');

}    function sendMessage() {

wssend($('#message')val());

}

页面:

 View Code

运行之后如下,服务端即时获得客户端的消息。

模拟股票

上面的例子很简单,只是为了演示如何运用nodejs的ws创建一个WebSocket服务器。且可以接受客户端的消息。那么下面这个例子演示股票的实时更新。客服端只需要连接一次,服务器端会不断地发送新数据,客户端收数据后更新UI页面如下,有五只股票,开始和停止按钮测试连接和关闭。

服务端:

1模拟五只股票的涨跌。

var stocks = {    "AAPL": 950,    "MSFT": 500,    "AMZN": 3000,    "GOOG": 5500,    "YHOO": 350}function randomInterval(min, max) {    return Mathfloor(Mathrandom() (max - min + 1) + min);

}var stockUpdater;var randomStockUpdater = function() {    for (var symbol in stocks) {        if(stockshasOwnProperty(symbol)) {            var randomizedChange = randomInterval(-150, 150);            var floatChange = randomizedChange / 100;

stocks[symbol] += floatChange;

}

}    var randomMSTime = randomInterval(500, 2500);

stockUpdater = setTimeout(function() {

randomStockUpdater();

}, randomMSTime);

}

randomStockUpdater();

2连接建立之后就开始更新数据

wsson('connection', function (ws) {    var sendStockUpdates = function (ws) {        if (wsreadyState == 1) {            var stocksObj = {};            for (var i = 0; i < clientStockslength; i++) {              var symbol = clientStocks[i];

stocksObj[symbol] = stocks[symbol];

}            if (stocksObjlength !== 0) {                wssend(JSONstringify(stocksObj));//需要将对象转成字符串。WebSocket只支持文本和二进制数据

consolelog("更新", JSONstringify(stocksObj));

}

}

}    var clientStockUpdater = setInterval(function () {

sendStockUpdates(ws);

}, 1000);

wson('message', function (message) {        var stockRequest = JSONparse(message);//根据请求过来的数据来更新。

consolelog("收到消息", stockRequest);

clientStocks = stockRequest['stocks'];

sendStockUpdates(ws);

});

客户端:

建立连接:

var ws = new WebSocket("ws://localhost:8181");

onopen直接只有在连接成功后才会触发,在这个时候将客户端需要请求的股票发送给服务端。

var isClose = false;    var stocks = {        "AAPL": 0, "MSFT": 0, "AMZN": 0, "GOOG": 0, "YHOO": 0

};    function updataUI() {

wsonopen = function (e) {

consolelog('Connection to server opened');

isClose = false;            wssend(JSONstringify(stock_request));

consolelog("sened a mesg");

}        //更新UI

var changeStockEntry = function (symbol, originalValue, newValue) {            var valElem = $('#' + symbol + ' span');

valElemhtml(newValuetoFixed(2));            if (newValue < originalValue) {

valElemaddClass('label-danger');

valElemremoveClass('label-success');

} else if (newValue > originalValue) {

valElemaddClass('label-success');

valElemremoveClass('label-danger');

}

}        // 处理受到的消息

wsonmessage = function (e) {            var stocksData = JSONparse(edata);

consolelog(stocksData);            for (var symbol in stocksData) {                if (stocksDatahasOwnProperty(symbol)) {

changeStockEntry(symbol, stocks[symbol], stocksData[symbol]);

stocks[symbol] = stocksData[symbol];

}

}

};

}

updataUI();

运行效果如下:只需要请求一次,数据就会不断的更新,效果是不是很赞,不用轮询,也不用长连接那么麻烦了。文章末尾会附上所有源码。

(美股的涨跌和A股的颜色是反的,即红跌绿涨)

实时聊天

上面的例子是连接建立之后,服务端不断给客户端发送数据。接下来例子是一个简单的聊天室类的例子。可以建立多个连接。

1安装node-uuid模块,用来给每个连接一个唯一号。

2服务端消息发送

消息类型分notification和message两种,前者是提示信息,后者是聊天内容。消息还包含一个id、昵称和消息内容。在上一节有学习到readyState有四个值,OPEN表示连接建立可以发送消息。如果页面关闭了,为WebSocketCLOSE。

function wsSend(type, client_uuid, nickname, message) {    for (var i = 0; i < clientslength; i++) {        var clientSocket = clients[i]ws;        if (clientSocketreadyState === WebSocketOPEN) {

clientSocketsend(JSONstringify({                "type": type,                "id": client_uuid,                "nickname": nickname,                "message": message

}));

}

}

}

3服务端处理连接

每新增加一个连接,都会发送一条匿名用户的加入的提示消息,如果消息中带有“/nick” 认为这一个修改昵称的消息。然后更新客户端的昵称。其他都会当做聊天消息处理。

wsson('connection', function(ws) {    var client_uuid = uuidv4();    var nickname = "AnonymousUser" + clientIndex;

clientIndex += 1;

clientspush({ "id": client_uuid, "ws": ws, "nickname": nickname });

consolelog('client [%s] connected', client_uuid);    var connect_message = nickname + " has connected";    wsSend("notification", client_uuid, nickname, connect_message);

consolelog('client [%s] connected', client_uuid);

wson('message', function(message) {        if (messageindexOf('/nick') === 0) {            var nickname_array = messagesplit(' ');            if (nickname_arraylength >= 2) {                var old_nickname = nickname;

nickname = nickname_array[1];                var nickname_message = "Client " + old_nickname + " changed to " + nickname;                wsSend("nick_update", client_uuid, nickname, nickname_message);

}

} else {

wsSend("message", client_uuid, nickname, message);

}

});

处理连接关闭:

var closeSocket = function(customMessage) {        for (var i = 0; i < clientslength; i++) {            if (clients[i]id == client_uuid) {                var disconnect_message;                if (customMessage) {

disconnect_message = customMessage;

} else {

disconnect_message = nickname + " has disconnected";

}                wsSend("notification", client_uuid, nickname, disconnect_message);

clientssplice(i, 1);

}

}

};

wson('close', function () {

closeSocket();

});

4客户端

没有启动时,页面如下,change按钮用来修改昵称。

View Code

js:

//建立连接

       var ws = new WebSocket("ws://localhost:8181");        var nickname = "";

       wsonopen = function (e) {

           consolelog('Connection to server opened');

       }        //显示

       function appendLog(type, nickname, message) {            if (typeof message == "undefined") return;            var messages = documentgetElementById('messages');            var messageElem = documentcreateElement("li");            var preface_label;            if (type === 'notification') {

               preface_label = "<span class=\"label label-info\"></span>";

           } else if (type == 'nick_update') {

               preface_label = "<span class=\"label label-warning\"></span>";

           } else {

               preface_label = "<span class=\"label label-success\">"

               + nickname + "</span>";

           }            var message_text = "<h2>" + preface_label + "&nbsp;&nbsp;"

           + message + "</h2>";

           messageEleminnerHTML = message_text;

           messagesappendChild(messageElem);

       }        //收到消息处理

       wsonmessage = function (e) {            var data = JSONparse(edata);

           nickname = datanickname;

           appendLog(datatype, datanickname, datamessage);

           consolelog("ID: [%s] = %s", dataid, datamessage);

       }

       wsonclose = function (e) {

           appendLog("Connection closed");

           consolelog("Connection closed");

       }        //发送消息

       function sendMessage() {            var messageField = documentgetElementById('message');            if (wsreadyState === WebSocketOPEN) {

               wssend(messageFieldvalue);

           }

           messageFieldvalue = '';

           messageFieldfocus();

       }        //修改名称

       function changName() {            var name = $("#name")val();            if (wsreadyState === WebSocketOPEN) {

               wssend("/nick " + name);

           }

       }

运行结果:

页面关闭之后,连接马上断开。

这种实时响应的体验简直不能太爽,代码也清爽了,前端体验也更好,客户端不用一直发请求,服务端不用等着被轮询。

小结:上面例子的代码都很好理解,接下来学习WebSocket协议。

在linux中安装nodejs方法如下:

1、去官网下载和自己系统匹配的文件:

通过  uname -a  命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系统),如图

故下载一下红色框中文件 ,版本为v6100

2、下载下来的tar文件上传到服务器并且解压,然后通过建立软连接变为全局;

1)上传服务器可以是自己任意路径,目前我的放置路径为  cd /app/software/

2)解压上传(解压后的文件我这边将名字改为了nodejs,这个地方自己随意,只要在建立软连接的时候写正确就可以)

① tar -xvf   node-v6100-linux-x64tarxz   

② mv node-v6100-linux-x64  nodejs 

③确认一下nodejs下bin目录是否有node 和npm文件,如果有执行软连接,如果没有重新下载执行上边步骤;

3)建立软连接,变为全局

①ln -s /app/software/nodejs/bin/npm /usr/local/bin/ 

②ln -s /app/software/nodejs/bin/node /usr/local/bin/

4)最后一步检验nodejs是否已变为全局

在Linux命令行node -v 命令会显示nodejs版本,说明安装成功

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎样实现安装Node.js并启动本地服务

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情