如何快速搭建一个 Node.JS 项目并进入开发?
<h1><span style="color: rgba(0, 204, 255, 1)">了解:如何快速搭建一个项目并进入开发?</span></h1><p>在此不概述 Node.JS 的历史以及发展过程。</p>
<p> </p>
<p>因为之前接触过通过 Java 开发语言,所以明确地知道一个服务器所需的文件,以及一个服务器所需要的操作。</p>
<p>那么,我们细分一下,所有的服务器都至少需要什么呢?</p>
<ul>
<li>静态文件访问</li>
<li>路由分发</li>
<li>数据库连接</li>
</ul>
<p>这三者是最重要的服务器基础功能:</p>
<p> 静态文件是类似如图片、CSS、JS、HTML等前端需要的界面资源</p>
<p> 路由分发则是当浏览器 OR 客户端访问某个URL地址时,服务器会自行解析并分发给某段处理代码中。</p>
<p> 而数据库连接则是将数据保存至磁盘(即数据库)而不至于关闭服务器便消失了(静态服务器可忽略数据库)</p>
<p> </p>
<p>一个服务器最要紧的是让浏览器访问到相关 URL 时,就会自行解析 URL ,之后分发给相关处理程序进行处理,即路由分发功能。</p>
<p>所以第一步,让我们了解一个 Node.JS 项目的基础文件并知道怎样进行创建。</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.1 引入 npm 概念</span></h2>
<p>npm 是一个包管理器,它可以对项目的依赖文件进行加载,卸载等操作,同时可以创建一个项目的配置文件(package.json)(目前我初学了解的)<br>同样的,一个项目需要怎样的依赖环境,都需要 npm 来配置</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.2 创建一个 Node.JS 项目</span></h2>
<p>打开文件管理器,在你想要的索引位置上<strong>新建一个文件夹,文件夹的名称即是项目名</strong></p>
<p>打开 DOS / 终端 ,执行 npm 进行项目的创建(注意,在项目的当前文件夹)</p>
<div class="cnblogs_code">
<pre>npm init</pre>
</div>
<p> </p>
<p>将会在项目目录下创建一个 package.json 文件</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1140908/202002/1140908-20200210233425301-44740281.png" alt="" width="921" height="499"></p>
<p> </p>
<p>箭头所指的即是创建过程中填写的配置信息,比方:author,指的是开发者名称,而 main,指的是初始化时指定的主文件入口</p>
<p>至于其它,我相信网上有一个更全面的 配置文件属性介绍文章。</p>
<p> </p>
<p>创建好 package.json 后,需再创建项目必备文件夹以及文件(有些方法可以一键生成,这里不作推荐)</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.3 创建项目必备文件夹以及文件</span></h2>
<p><img src="https://img2018.cnblogs.com/i-beta/1140908/202002/1140908-20200211125944342-706759673.png" alt=""></p>
<p> </p>
<p> </p>
<p>注意:package-lock.json 不必手动创建,以及 node_modules 文件夹亦无需创建。</p>
<p>仅需创建:bin、public、routes、views 文件夹,同时创建一个名为 app.js ,它将作为主函数入口。</p>
<p> </p>
<p><strong>【重要】</strong>请在 package.json 中手动将其中的 main 属性配置为 app.js ( 自动生成的默认为 index.js )</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.4 安装 Express 框架</span></h2>
<p> </p>
<p>引言:</p>
<p><em> express 框架是 node.js 官方唯一推荐的框架(当前,从一些书上了解的)</em></p>
<p><em> 所以我觉得,它应该可以作为入门框架,同时可以开发一些小项目。</em></p>
<p> </p>
<p>安装:在当前的项目根目录中打开 DOS / 终端,之后执行以下命令:</p>
<p> </p>
<div class="cnblogs_code">
<pre>npm <span style="color: rgba(0, 0, 255, 1)">install</span> express -save</pre>
</div>
<p> </p>
<p><strong>关于 npm 安装参数中的 -save 或是 -dev 的说明:</strong></p>
<p>当项目中依赖某个模块时,或者项目中使用的某个模块依赖另外一个模块时,正常情况下需要安装它们。</p>
<p>一般而言,模块依赖什么模块,便会在其 package.json 中的 <span style="color: rgba(255, 0, 0, 1)">dependencies <span style="color: rgba(0, 0, 0, 1)">写上需要什么依赖模块。</span></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">比如 express 框架的 package.json :</span></span></p>
<p><img src="https://img2018.cnblogs.com/i-beta/1140908/202002/1140908-20200211131347289-1231037833.png" alt=""></p>
<p>我们再来看看它其中的的内容,没有全部复制,仅复制其中的 <span style="color: rgba(255, 0, 0, 1)">dependencies</span> 属性</p>
<div class="cnblogs_code">
<pre>"dependencies"<span style="color: rgba(0, 0, 0, 1)">: {
</span>"accepts": "~1.3.7"<span style="color: rgba(0, 0, 0, 1)">,
</span>"array-flatten": "1.1.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"body-parser": "1.19.0"<span style="color: rgba(0, 0, 0, 1)">,
</span>"content-disposition": "0.5.3"<span style="color: rgba(0, 0, 0, 1)">,
</span>"content-type": "~1.0.4"<span style="color: rgba(0, 0, 0, 1)">,
</span>"cookie": "0.4.0"<span style="color: rgba(0, 0, 0, 1)">,
</span>"cookie-signature": "1.0.6"<span style="color: rgba(0, 0, 0, 1)">,
</span>"debug": "2.6.9"<span style="color: rgba(0, 0, 0, 1)">,
</span>"depd": "~1.1.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"encodeurl": "~1.0.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"escape-html": "~1.0.3"<span style="color: rgba(0, 0, 0, 1)">,
</span>"etag": "~1.8.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"finalhandler": "~1.1.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"fresh": "0.5.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"merge-descriptors": "1.0.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"methods": "~1.1.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"on-finished": "~2.3.0"<span style="color: rgba(0, 0, 0, 1)">,
</span>"parseurl": "~1.3.3"<span style="color: rgba(0, 0, 0, 1)">,
</span>"path-to-regexp": "0.1.7"<span style="color: rgba(0, 0, 0, 1)">,
</span>"proxy-addr": "~2.0.5"<span style="color: rgba(0, 0, 0, 1)">,
</span>"qs": "6.7.0"<span style="color: rgba(0, 0, 0, 1)">,
</span>"range-parser": "~1.2.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"safe-buffer": "5.1.2"<span style="color: rgba(0, 0, 0, 1)">,
</span>"send": "0.17.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"serve-static": "1.14.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"setprototypeof": "1.1.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"statuses": "~1.5.0"<span style="color: rgba(0, 0, 0, 1)">,
</span>"type-is": "~1.6.18"<span style="color: rgba(0, 0, 0, 1)">,
</span>"utils-merge": "1.0.1"<span style="color: rgba(0, 0, 0, 1)">,
</span>"vary": "~1.1.2"<span style="color: rgba(0, 0, 0, 1)">
}</span></pre>
</div>
<p>这样一来,需要什么依赖便知道得一清二楚了。</p>
<p>但是我们的项目,总不能说模块依赖什么时,我们手动加上,如果有成千上百个依赖模块呢</p>
<p>所以,引入了 npm -save 的概念,也就是当你为项目安装什么模块时,它会把这个模块的名称,版本写入你的项目依赖中</p>
<p>-save 和 -save -dev 省掉了手写或修改 package.json 的步骤,各自功能如下:</p>
<p><span style="color: rgba(255, 0, 0, 1)">-save</span> :自动将模块和版本号添加到 <span style="color: rgba(255, 0, 0, 1)">dependencies</span> 部分</p>
<p><span style="color: rgba(255, 0, 0, 1)">-save -dev</span> :自动将模块和版本号添加到 <span style="color: rgba(255, 0, 0, 1)">devdependencies</span> 部分</p>
<p> </p>
<p>配置文件中的这两个属性,具体区别可以在网络中搜索一下,相信会有更好的解释,这里不作说明。</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.5 编写 app.js 文件</span></h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 引入 express 框架 -> 需 npm 安装</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> express = require('express'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 初始化框架,并将初始化后的函数给予 '当前页面'全局变量 app
* 也就是说, app 是 express
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> app =<span style="color: rgba(0, 0, 0, 1)"> express();
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 配置框架环境 S </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置 public 为静态文件的存放文件夹</span>
app.use('/public', express.static('public'<span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 配置框架环境 E </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
app.get(</span>'/', <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(req, res) {
res.send(</span>'Hello World'<span style="color: rgba(0, 0, 0, 1)">);
})
</span><span style="color: rgba(0, 0, 255, 1)">var</span> server = app.listen(8081, <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> host =<span style="color: rgba(0, 0, 0, 1)"> server.address().address
</span><span style="color: rgba(0, 0, 255, 1)">var</span> port =<span style="color: rgba(0, 0, 0, 1)"> server.address().port
console.log(</span>"Node.JS 服务器已启动,访问地址: http://%s:%s"<span style="color: rgba(0, 0, 0, 1)">, host, port)
})</span></pre>
</div>
<p>注意:部分网络中,访问地址会出现 http://:::8081 的情况,在浏览器中输入 localhost:8081 便可以访问了。</p>
<p>因为 Node.JS 启用了 IPv6 的缘故,并不影响网址的访问。</p>
<p> </p>
<h2><span style="color: rgba(0, 204, 255, 1)">1.6 启动服务器</span></h2>
<p>在项目根目录中打开 DOS / 终端,执行 node app.js </p>
<p><img src="https://img2018.cnblogs.com/i-beta/1140908/202002/1140908-20200211133229668-1859284365.png" alt=""></p>
<p> </p>
<p> </p>
<p>终端出现的错误请忽略,因为出于习惯我总是拼写成 note,现在已经不会犯同样的错误了。</p>
<p>到这里,你也可以访问到 node.js 服务器了。</p>
<p> </p>
<p>至于框架类的学习,后续再发一篇文章,顺便,我也需要练手一些项目了。</p>
<p> </p>
<p> </p>
<p>2020-02-11 写于揭阳</p>
<p>转载请附上本博客地址:https://www.cnblogs.com/chongsaid/ 或当前文章链接。</p><br><br>
来源:https://www.cnblogs.com/chongsaid/p/nodejs_getStart.html
頁:
[1]