一、前言

前端如何独立用nodeJs实现一个简单的注册、登录功能,是不是只用nodejs+sql就可以了?其实是可以实现,但离实际应用还有距离,那要怎么做才是实际可用的。

网上有很多nodeJs的示例,包括和 sql / nginx … 等周边技术结合demo,但通常都是做为入门演示或解决某一问题,少有站在项目实际完整应用角度,给出一个整体的解决方案。一些前端朋友和我讨论nodejs时,也多表现出对服务端的欠缺,虽然知道nodejs很好,但难以实际应用。

我在这块做了些研究,也在公司项目中有应用,在此和大家分享下,如何用nodejs实现一个实际可用的项目,需要操作的步骤及相关的技术应用。现在还没想好做怎样的一个demo,就随想随做,如有意义的需求我们也可以一起实现下,若有欠缺,也欢迎共同讨论。

第一次做,我们就先实现下最常用的注册和登录。

技术点:

1、用户注册站点,需要输入用户名、密码、邮箱,验证有效性。[ nodejs / express / validate / md5 / node-dev / requirejs ]

2、发送验证邮件,用户通过邮箱验证后,注册成功。[ mongodb / mailer ]

3、用户登录,可以访问需要登录权限的页面[ redis / 权限控制 ]

4、本项目在linux上开发 及 发布部署 [ git / nginx / ubuntu / aliyun / pm2 ]

5、考虑到前后端分离的需要,我们也将分别搭建前台服务(接收页面请求)、后台服务(数据存储) [ 项目架构 ]

⋅⋅*因涉及到的技术点较多,在本项目中每一种技术如nginx只对使用到的部分做讲解,其它部分后面用到再讲,循序渐进,基础较弱者也好逐步接受。

⋅⋅*本节,我们将实现unbuntu、nodejs、nginx的安装及初步使用,搭建一个可访问的服务

二、linux环境

本次开发将linux上开发,建议前端开发者尝试使用linux系统,其能拓展技术面,在提升开发、发布效率等方面也有好处,初次使用linux会有些障碍,不过现在linux也有类win7的漂亮桌面环境,操作大致相似,在命令不熟时也可以正常使用,坚持用两周,是可以适应的。

选择系统上建议安装适合个人开发者的ubuntu。

建议安装双系统,虚拟机太弱,完全安装ubuntu,使用又不便,有些软件如PS是不支持linux的。

win7下安装ubuntu 的双系统,WIN7安装ubutntu 步骤参见 http://www.upopen.cn/article/info?id=559291b3f0e6e0665b000001

安装成功后,我们就开始提高B格之旅,接下来会对用到的linux操作做简单解释,具体的ubuntu教程可以参考 http://www.upopen.cn/article/info?id=55938b7ff0e6e0665b000003

三、安装nodeJs

快捷键 Ctrl + Alt + T 打开shell终端,

1、打开Nodejs站点 https://nodejs.org/download/,下载linux下对应的.gz文件。也可以拷贝下载地址后,

在shell里执行 wget https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz。

解释:wget :下载后面路径指定的文件

2、下载后默认在Downloads文件里,我们将压缩文件放Soft/node 目录里以便分类管理

shell执行 mkdir Soft // mkdir: 创建Soft文件夹

执行 cd Downloads //cd: 进入到 Downloads 下载文件目录

执行 cp node-v0.12.5-linux-x64.tar.gz /home/cc/Soft
//cp: 复制 node..gz到Soft目录下,注意cc是你的主机名,可通过pwd查看

执行cd //进入个人根目录

执行cd Soft/node

执行 tar -zxvf node-v0.12.5-linux-x64.tar.gz //tar -zxvf 解压

执行 mv node-v0.12.5-linux-x64.tar.gz node //mv : 修改文件夹名为node

执行sudo vi /etc/profile //打开环境变量配置文件

在最后写入

javascriptexport PATH="/home/cc/Soft/node/bin:$PATH"
export NODE_PATH="/home/cc/Soft/node/lib/node_modules"

// 环境变量地址参见 node的 pwd

配置成功后重启

作用:重启后,可执行node -v查看是否安装成功。

解释:本部涉及到ubuntu的基本命令操作,都有简单的解释

四、创建项目目录并安装express等框架包

目录结构

root:项目根目录
⋅⋅web:前端服务
⋅⋅
static:静态服务
⋅⋅*server:后端服务

1、执行 mkdir -p root/web

作用:创建目录,所有项目都在root下,前端服务在web。创建成功后进入web文件夹 执行cd root/web

2、执行touch package.json

作用:创建 package.json文件,维护nodejs项目的依赖文件

解释:touch :创建文件

4、执行 vi package.json

作用:用系统的VI编辑器打开 package.json文件。用vi作大量的编辑工作是不适合的,我们还是用常规的编辑器,在桌面打开文件系统,进入我们创建的root/web目录,使用系统默认的gedit编辑器打开package.json

5、通过gedit在package.json写入

javascript{
⋅⋅"name": "myCoolNodejs ",
⋅⋅"version": "0.0.1",
⋅⋅"private": true,
⋅⋅"scripts": {
⋅⋅⋅"start": "node app.js"
⋅⋅},
⋅⋅"dependencies": { //主要是这两处,设置引入模块,后面还会用到其它模块,另行添加
⋅⋅⋅"express": "*",
⋅⋅⋅"ejs": "*"
⋅⋅}
}

6、执行npm install

作用:下载package.json中dependencies 定义的引入模块

注意:有时限制于网络等因素npm install会安装不成功,可以使用淘宝的npm镜像,执行 npm install -g cnpm --registry=https://registry.npm.taobao.org,安装cnpm,执行cnpm install 。使用同npm。

7、通过桌面打开 web文件夹,创建app.js,并写入基本配置

javascript        /*** 引入依赖模块*/var express    = require( 'express' ),http              = require( 'http' ),path             = require( 'path' );var app        = express(),server     = http.Server( app );/*** 设置*/app.set( 'port', process.env.PORT || 3000 ); //服务启动端口app.set( 'views', __dirname + '/views' ); //视图文件app.set( 'view engine', 'ejs' ); //页面引擎app.use( '/', express.static( path.join( __dirname, 'assets' ))); //静态文件路径app.get( '/', function( req, res ){res.render( 'index.ejs' ); //请求跳转到 index.ejs文件})server.listen( app.get( 'port' ), function(){ //监听服务端口console.log( 'root server listening on port ' + app.get( 'port' ));} );server.on( 'close', function(){console.log( 'close' );    } );

8、web目录下创建views文件夹,里面再创建index.ejs文件作为首页

9、打开index.ejs文件,并写入

javascript        <!DOCTYPE html><html><head><title>我的nodejs项目</title></head><body><h1>我的nodejs项目</h1><img src="/public/imgs/logo.png" /> <!-- 引用图片,是为测试后面配置静态服务器--></body></html>

作用:ejs语法同html,优势在于其可以引用一些命令,如接收服务服务端定义的数据、include模板等

10、在web目录下创建文件夹 assets/public/imgs,拷入logo.png 图片

11、shell到web目录,执行 node app.js,在浏览器打开 127.0.0.1:3000,即可看到我们在index.ejs里设置的内容,如图

12、在root在创建 statc文件夹,作为静态服务资源,将目录web/assets/下的文件,复制到static里,下面nginx将设置静态文件代理到static服务器

五、安装nginx

1、shell执行sudo apt-get install nginx

作用:安装nginx服务器,nginx的使用可参见http://www.upopen.cn/article/info?id=559254e8b269230039000003

2、执行sudo vi /etc/nginx/sites-enabled/default

作用:因配置文件需要编辑的命令较少,我们尝试通过vi 编辑 nginx的配置文件。vi命令操作参见http://www.upopen.cn/article/list?kind=ubuntu

    在server里增加
javascript        location  ~ \.(png|jpg|css|js|woff|ttf|less|gif)$ {root /home/jgc/root/static/;#配置以上面结尾的文件都指向到 /home/cc/root/static。注意/cc/修改为你的计算机名}location / {proxy_pass http://mynodejs.com;#其它请求转向到 http://mynodejs.com; 该名称可以自定义}
    在server外面新增
javascript        upstream mynodejs.com { //此处名称与上面proxy_pass名称一致server 127.0.0.1:3000;#创建集群,为分摊服务器压力,可以创建多个服务器,做负载均衡,如果我们将web复制一份为web1,启动端口改为3001,将其启动后,此处可以再增加一条配置server 127.0.0.1: 3001# 这样访问便可随机指向3000 及 3001服务,分摊访问压力、降低服务宕机风险}

3、在shell 执行 sudo /etc/init.d/nginx start

作用:启动nginx服务

4、此时访问127.0.0.1也打开了和 3000一样的页面,不同在于其静态资源是从static文件夹获取的,可以通过删除web中的assets文件测试。我们后续静态文件都在statc里编辑,发布时static和web放在不同的服务器上,即实现了资源分离,为CDN做准备,

5、执行sudo vi /etc/hosts

作用:打开本地host映射文件,新增一条 127.0.0.1 www.mynodejs.com。保存后,浏览器访问 www.mynodejs.com。

六、总结

本节我们使用、开发了如下功能

1、ubuntu的安装和使用

2、nodejs的安装 及 模块安装

3、nodejs文件的简单配置和启动,项目目录的划分

4、nginx安装、简单配置 及 启动 [ 反向代理及集群 ]

如果你原本只是一个单纯写html/css/js的前端开发员,相信这节是可以学到相当多的新知识,下节,我们将主要在nodejs及 mongo这一块,并按实际项目使用创建项目架构。

有不明或错误,欢迎加群讨论,谢谢。

我的技术新Q群:435485569

上一篇:前后端分离项目实践分析

下一篇:公司项目NODEJS实践0.2[ express, ajax.. ]

公司项目NODEJS实践0.1[ ubuntu,nodejs,nginx...]相关推荐

  1. 公司项目NODEJS实践0.3[ mongo / session ...]

    一.前言 ⋅⋅⋅书接上回,我们搭建了WEB服务端路由.模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 / 退出功能 ⋅⋅⋅DE ...

  2. nodejs实践录:ubuntu 16.04系统nodejs环境搭建

    本文讲述ubuntu 16.04 64bit系统中,nodejs环境的搭建. 安装 此章节已失效 此章节已失效 更新源,命令如下: sudo apt-get update sudo apt-get i ...

  3. nodejs 实践项目_NodeJS:最佳生产实践

    nodejs 实践项目 by Saurabh Rayakwar 通过索拉比·雷阿克瓦尔 NodeJS:最佳生产实践 (NodeJS: Best Practices for Production) Th ...

  4. nodejs 实践:express 最佳实践(五) connect解析

    nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...

  5. nodejs 实践:express 最佳实践(六) express 自省获得所有的路由

    nodejs 实践:express 最佳实践(六) express 自省获得所有的路由 某些情况下,你需要知道你的应用有多少路由,这在 express 中没有方法可以.因此我这边曲线了一下,做成了一个 ...

  6. linux 安装nodejs8,CentOS 安装NodeJS V8.0.0的方法

    下载nodejs 解压 tar -xvf node-v8.0.0-Linux-x64.tar.xz 测试是否安装成功 进入解压目录下的 bin 目录,执行 ls 命令 cd node-v8.0.0-l ...

  7. nodejs 菜鸟教程,菜鸟教程 nodejs

    求<nodejs权威指南>全文免费下载百度网盘资源,谢谢~ . <nodejs权威指南>百度网盘pdf最新全集下载:链接:?pwd=pfne提取码:pfne简介:全书共16章, ...

  8. vue nodejs 构建_如何使用nodejs后端打字稿版本开发和构建vue js应用

    vue nodejs 构建 There are so many ways we can build Vue.js apps and ship for production. One way is to ...

  9. 创建VUE项目,vue-cli2.0版本和3.0版本的区别,将vue2.0项目升级为vue3.0项目

    创建VUE项目,vue-cli2.0版本和3.0版本的区别,将vue2.0项目升级为vue3.0项目 使用vue-cli2.0版本创建vue项目 创建前的准备 开始创建 创建过程 项目正常创建 使用v ...

  10. 学习NodeJS第二天:漫谈NodeJS

    缘起-- 新型的服务端正在进入我们的视野,让我们投入了关注的目光,例如近来的 NodeJS 算比较抢眼的一员. 之所以创造 NodeJS ,引用原作者 Ryan 之语,目标是为了可以更轻松地编写具有可 ...

最新文章

  1. 对称加密----AES和DES加密、解密
  2. Ping命令及其协议
  3. SpringMVC 视图解析器及拦截器
  4. Oracle读书笔记
  5. python搭建django环境_在BAE上搭建python,django环境小记
  6. Python urllib2 设置超时时间并处理超时异常
  7. python2.7.11 for iOS 苹果上的python27环境
  8. 千牛取消机器人自动回复_拼多多回复率低怎么办?
  9. php上课随机点名,课堂随机点名软件
  10. 遗传算法和禁忌搜索解TSP
  11. 电脑硬盘损坏如何修复?自己动手就能解决
  12. 计算机基本应用Excel考题,excel考题_大学计算机基础期末考试试题word ppt excel的操作题_淘题吧...
  13. Win10 利用快捷键,快速新建TXT文档
  14. APISpace 文本情感倾向分析API
  15. linux内top命令,Linux中的top命令的详细解释
  16. lt;一 SAP ABAP 将数字转换成本地语言(中文、英文)大写
  17. 一些Pixel手机的使用技巧
  18. Java8种Stream流相关操作——集合的筛选、归约、分组、聚合
  19. iOS 逆向编程(五)通过 (OpenSSH) Wifi 远程连接登录 iPhone
  20. 软件的生命周期(软件工程各阶段的工作)

热门文章

  1. Juggling Life and Learning
  2. DoubleArrayTrie详解
  3. 【2015 NEERC - G 】Garden Gathering【距离计算变形、数学巧妙转换】
  4. 甘肃暴雨强度公式_最新给排水计算软件,16大功能常用公式自动计算,配11套施工方案...
  5. Cobalt Strike参数详解
  6. 应急响应的基本流程二
  7. 2020牛客多校训练3 G Operating on a Graph(并查集+链式结构)
  8. 242.有效的字母异位词(力扣leetcode) 博主可答疑该问题
  9. sys.argv学习,通过运行py脚本,手动传入参数
  10. VB6 如何添加自定义函数 模块 把代码放到一个模块中