把NodeJS项目扔到云服务器
当你学到NodeJS时,你可能会去了解服务器端后端等等,还有数据库
以前我学过Java和mysql
如果你学前端,可能会去学NodeJS和MongoDB
一个是服务器端编程语言,一个是数据库
看了看B站视频,有的还进行了对比,我感觉讲的很不错(对于我这种小白)
Nodejs本身就是基于JS语言,学习成本低,它的概念是基于ECMA的JS运行环境
以前学的JS也是ECMA,那么它们有什么不同呢
浏览器的JS的组成部分有ECMA DOM BOM
NODE的JS组成部分就只有ECMA(比如最外层作用域是global)
说明,你会JS的基本语言你就可以上手NODEJS了,所以说学习成本大大降低
NODE+EXPRESS+MONGODB这三个入个门,你就可以写个简单后台了
目的是实现动态数据和前端页面进项交互,中间的桥梁就是AJAX
当然,你可能会去了解什么是AJAX 什么是XMLHTTPRequest 什么是跨域
什么HTTP协议 =》在进化到从请求到响应浏览器是如何渲染页面的 整个过程
你刚开始可能还会对服务器端语言比较感兴趣,喜欢做比较
NodeJS和Java对比一下:
一个是单线程,一个是多线程 一个是弱语言,一个是强语言
一个是解释型语言,一个编译型语言
一个数据类型会自动转换,一个需要自己动手转换,数据类型要自己独立声明
你不会又对Java感兴趣了吧,啥是字节码文件,啥是反射,面向对象语言?抽象类,多态,枚举,泛型…这可太牛了
Java作为多线程的优势和劣势,当数据量小时体现不出来优势,相反,服务器资源的浪费还会增加成本,但当数据量比较大的时候,优势就体现出来了,用户的请求都会有每一个线程去帮忙处理,不需要一个线程处理好多个用户请求,不是有人说过吗,JAVA比较适合大型企业项目电商之类的
Node作为单线程,靠的是回调函数,相当于在数据库那边给挂号,成本比较低,适合处理IO密集型的操作,也就是频繁处理数据库;但不适合处理CPU密集型,也就是用户每次访问的时候思考半天,因为你是单线程的,你在思考,后面的用户都在等着,如果每个用户都这样,Node会发疯
数据库,一般就是关系型数据库非关系型数据库,关系型数据库就是表与表之间有紧密的关系,其次关系型数据库都有比较统一的sql语句,如果你sql语句玩的6,学关系型数据库成本会很低,数据库难点在于优化,如何让数据库查询更快等等
还有另一种就是非关系行数据,也就是NOSQL,mongodb应该是最像关系型数据的非关系型数据了,但关系型数据的语法标准并不统一,这样学习成本就比较高,为什么选择mongodb呢,因为里面的语法和函数编程很像,犹如在写JS。当然,和关系型数据库相比,写复杂的查询语言,编码可能是地狱级别的,如果喜欢玩数据库,我个人觉得mysql是最优选择
最后,说一说,搭建服务器上线
首先,我买的是阿里云服务器(你也可以用虚拟机练手),学习视频找B站慕课网
目的,我想让本机的项目在另一台电脑 另一种系统一样可以运行
在公网开辟端口,让其他人可以访问这个项目
你可能会想到什么,运行环境,代码的服务器,一般会放在Linux系统里
那么,我们就要去安装Linux下的NodeJS MongoDB
安完后你要去配置环境变量
配完环境变量,你还会想,我要让它在后台运行,万一我关了命令行窗口,环境不运行了怎么办,那么NodeJS有个pm2(当然还有别的解决方案),MongoDB有fork配置,这样即使你关了远程连接,服务器依然在运行这些环境
最后就是把项目扔到服务器里,最简单暴力的方式是,下载个XShell,可以直接用手把项目扔进服务器里,当然,不要放node_modules文件夹,这个太大了,传输巨慢,扔完之后,在项目当前路径输入npm install就可以了
期间我遇到了不少坑,比如你可能什么插件环境没装,npm各种报错,什么g++还有npm的ERR的报错都会有提示,直到现在我依然有一些问题没有解决
通过项目上线,你可以体会到什么是跨平台,windows能玩,linux也能玩
npm config list
npm config get registry
npm config set registry https://registry.npm.taobao.org
这几句命令可能用得上,在linux环境,不需要你再去下载什么nrm cnpm了