设为首页 收藏本站
查看: 1106|回复: 0

[经验分享] nodejs学习笔记一——nodejs安装

[复制链接]

尚未签到

发表于 2017-2-24 09:06:31 | 显示全部楼层 |阅读模式
a.nodejs安装

  nodejs的安装没有什么说的默认安装即可。安装包官网下载即可:nodejs官网
  本人用的是window的安装包node-v4.2.6-x64.msi
  安装完成后打开命令行查看使用node -v命令查看安装node版本,有版本号展示说明安装成功啦
DSC0000.png

  需要创建一个文件夹作为nodejs服务器文件夹,比如本人在D:\chua下创建了一个chuaNodejs。这个文件夹将作为node服务端的根路径,也就是一个独立的工程。
DSC0001.png

  nodejs的基础使用可以参考菜鸟教程的基础教程,这里不分析了。本文是记录本人的实例学习nodejs。
  需要特别说明的是require使用相对路径时相对的是当前文件。

b.npm

  NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
  1.从NPM服务器下载第三方包到本地使用。
  2.从NPM服务器下载并安装第三方命令行程序到本地使用。
    3.将自己编写的包或命令行程序上传到NPM服务器供别人使用。
  由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
DSC0002.png

  npm安装命令为:"npm install " + 模块名称
    比如有一个很好用的基于nodejs的框架express框架。Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。我要构建的网站会基于这个框架,所以安装先。
  首先使用命令定位到我的服务器目录chuaNodejs,然后使用安装命令
DSC0003.png

  以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录, 并将其保存到依赖列表中(--save命令可以参考Ruthless npm的常用命令)。以下几个重要的模块是需要与 express 框架一起安装的:


  •   body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

  •   cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

  •   multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。



    npm install body-parser --save
    npm install cookie-parser --save
    npm install multer --save
    需要注意的是安装分为npm 的包安装分为本地安装(local)、全局安装(global)两种,从命令行来看,差别只是有没有-g而已,比如



npm install express      //本地安装
npm install express -g   //全局安装
  本地安装
  1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  2. 可以通过 require() 来引入本地安装的包。
    项目中的库都不会全局安装,npm install 时安装在 ./node_modules 里,这些库你只需要 require() 就能用了。
    全局安装
    1. 将安装包放在 /usr/local 下。
    2. 可以直接在命令行里使用。
    3. 不能通过 require() 来引入本地安装的包。
  一般安装在全局的都是有命令行需求的包,比如 bower,你需要在命令行中使用 bower 这个命令。
  测试:能否只安装一次第三方包多个项目使用。本人当前的项目是chuaNodejs,在该项目下安装了express。在此目录下创建一个执行文件server.js,代码如下(其中index.html是放在当前目录下的,你可以自己随便写一个)



var express = require("express");
var app = express();
//指定静态文件路劲static,可以直接访问static下的文件test.png:http://localhost:8080/test.png
app.use(express.static('static'));
app.get("/",function(req,res){
console.log(__dirname);
res.sendFile(__dirname + "/index.html")
})
var server = app.listen(8080,function(){
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
    执行server
DSC0004.png

  浏览器访问
DSC0005.png

  这个时候我又写了一个执行文件test.js放在当前目录,源码如下



var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World');
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
  然后也执行他,在浏览器中访问效果为
DSC0006.png

  说明同一个工程下可以监听多个端口。如果同时执行的是一个端口(比如server.js和test.js同为8080端口)则会报错,所以要避免
DSC0007.png

  所以本人在chuaNodejs下建立了一个当独的一个文件来作为一个独立的项目,如下
DSC0008.png

  其中server.js更改为(其中app.use(express.static('chuayyqing/static'))中的路径是相对于express包的安装根目录的。当前express是安装在chuaNodejs下的,所以路径是相对于chuaNodejs目录)。
    但是需要注意的是前端代码中写相对路径的时候需要特别注意相对路径指的具体是什么。
    比如主页index.html对应的url是http://localhost:8080/,这个是有前端有请求图片标签<img src='imgs/title.png'/>对应的请求路径是http://localhost:8080/imgs/title.png。
    点击使用app.get("/view/list")跳转到另一个页面,这个时候再去请求标签<img src='imgs/title.png'/>对应的请求路径是http://localhost:8080/view/imgs/title.png。所以相对路径要掌握好



var express = require("express");
var app = express();

app.use(express.static('chuayyqing/static'));
app.get("/",function(req,res){
console.log(__dirname);
res.sendFile(__dirname + "/index.html")
})
var server = app.listen(8080,function(){
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
  执行代码
DSC0009.png

  去浏览器运行即可。  
  如果下次来了一个新项目,就可以在chuaNodejs目录下再建一个文件来处理即可,照样可以使用已经安装好的express包。
  在代码中引用模块(使用require引用模块)分为以下几类
  1)http、fs、path等,原生模块,这个是安装nodejs的时候就已经安装好的,代码中直接使用,如require("http")。
    2)./mod或../mod,相对路径的文件模块,这里面每一个模块就是一个js文件,比如server.js中引用同目录下的test.js:require("./test.js")。
  3)/pathtomodule/mod,绝对路径的文件模块。
    4)mod,非原生模块的文件模块,比如第三方的包express,安装成功以后直接使用,如require("express")。
  今天的笔记就先到这里,至少首页可以跑起来了。
  如果觉得本文不错,请点击右下方【推荐】!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346408-1-1.html 上篇帖子: Nodejs + TypeScript 下篇帖子: SublimeText配置NodeJS代码提示
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表