node.js零基础详细教程(1):安装+基础概念
第一章 建议学习时间2小时 课程共10章
学习方式:详细阅读,并手动实现相关代码
学习目标:此教程将教会大家 安装Node、搭建服务器、express、mysql、mongodb、编写后台业务逻辑、编写接口,最后完成一个完整的项目后台,预计共10天课程。
每日更新,建议跟学,按照本教程学习一定可以学好Nodejs,中途发现教程有误的地方,请及时留言反馈
node.js安装
百度云盘有本教程需要的软件 链接:http://pan.baidu.com/s/1kVPxBJT 密码:uziu
通过官网下载
node.js 中文网下载地址 http://nodejs.cn/download/
windows系统我们一般选择mis版本,根据自己的电脑系统和位数选择
mac选择.pkg版本
具体的版本号,一定要安装偶数版本的,因为基数版为开发版本,偶数版为稳定版本

下载完成后的安装包直接双击运行,连续下一步即可,建议选择安装到默认目录,安装到其他目录可能需要重新配置环境变量(比较麻烦)
安装过程中如下下图会有个同意的选项 ,勾上才可以下一步


安装完成 -- 点击完成之后,不会有任何界面提示,也没有桌面图标
验证是否安装完成的方法:
点击电脑开始菜单,搜索cmd,点击打开cmd命令行,如下图:


然后输入 node -v 点击enter键,出现如下图的版本提升,就表安装完成了

node介绍
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
其实node.js就是一个可以在服务器端运行 javascript的环境而已 -- 运行环境
现在已经有很多公司在使用node作为服务器语言了,国外的:linkedin/paypal/twitter 国内的: 知乎的主站推送、网易(部分后台)、阿里(部分后台)
另外对于中小型项目的后台快速开发非常适合。
阻塞和非阻塞的解释:这里就得要涉及到 同步和异步 的概念,
同步:我们js代码是从上往下执行的,上一条代码没执行完成,不执行下一条代码就是同步。
异步:在上面代码执行的时候,下面代码也可以同时执行。
那么阻塞就是同步的状态表示,而非阻塞就是异步的状态表示。
开始程序
helloWord示例:
命令行输入node 按enter键确定 就可以看到下面面的提示 " >_ " 表示已经进入node的运行状态了,就可以输入js代码了(和以前网页中写js基本一致)

这里我们输入console.log( "helloWorld" ) 确定 即可看到打印的helloWorld

但是途中第二条横线出现的undefined是什么?这里在node中,每一行代码执行完,都会显示一下返回值,这里没有返回值,所以有个undefined
另外大家试试下面代码,定义 a=4,b=5,输出相加后的结果

如果要结束Node的运行状态,连续按两次 ctrl+c 就可以退出,执行状态如下图。

运行js文件:
建议创建一个用于放js的文件夹,取名nodeTest
然后在里面创建一个js文件, 取名 main.js,(注意文件的编码格式最好是utf-8,不然输出中文会乱码。)

编辑 main.js。在里面写入如下图代码,输出文件夹名字和文件名, __dirname 和 __filename 为node内部变量,表示文件夹和文件名。(注意:是连着两个下划线)

console.log("helloWorld"); //输出一行文字
console.log(__dirname); //输出文件夹名字
console.log(__filename); //输出文件名
写好的js文件如何使用node 运行呢?
前面我们的命令行是从开始菜单打开的,node的执行是在用户管理员 文件夹下,看下图

如果我们要在某个自定义的文件夹执行node,那么我们可以在 自己的文件夹 按住shift并点击右键,菜单中点击“在此处打开命令行”,即可定位到该目录

此时打开的命令行就定位到当前文件夹了。

此时直接输入 node 需要执行的文件名 确定 就执行了,可以看到打印的三行数据 helloWorld以及文件夹名和文件名

补充:目录切换命令
cd .. 回上一级目录

这样就定位到了 nodeTest的上一级 ,此时是D盘根目录
如果要进入子目录, 使用 cd 文件夹名

这样就重新 进入了nodeTest ,如果再有子目录,继续 cd 子目录名就能进入了
盘之间的切换 输入 盘符:

这样就进入了 E盘 ,再输入 D: 又可以回到 D盘
异步的实现
实现异步有两种方式: 1、回调函数 2、定时器
回调函数:监听到某个事件活动后,再执行别的代码,这种情况不影响后续代码执行,属于异步,具体的例子以后再说。
定时器:setTimeout 和 setInterval
所有的异步操纵,在js内部会优先执行同步代码,对于异步的代码会放到最后执行
试试下面的例子:在上一步的文件夹中创建main2.js 写入下面代码, 然后运行, 我们会看到,for循环执行完成以后才打印出setTimeout内部的100000000,就算out时间设置成0秒。
setTimeout(function(){
console.log(1000000000);
},0);
for(var i=0; i<1000; i++){
console.log(i);
}

好,今天就讲这么多,明天将讲解:模块化、fs文件操作模块、http创建服务模块。
关注公众号,博客更新即可收到推送

node.js零基础详细教程(1):安装+基础概念的更多相关文章
- 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用
关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用 工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...
- 基于Hexo+Node.js+github+coding搭建个人博客——基础篇
附上个人教程:http://www.ookamiantd.top/2017/build-blog-hexo-base/ 搭建此博客的动机以及好处在此就不多谈了,之前已经表达过,详情请看Start My ...
- Node.js文档和教程
七天学会NodeJS:https://nqdeng.github.io/7-days-nodejs/ Node入门:http://www.nodebeginner.org/index-zh-cn.ht ...
- node.js 和 npm/cnpm/nrm 的安装
node.js 和 npm/cnpm/nrm 的安装 安装 node.js.去 官网 下载,下载 LTS 版本的.安装时一路点确定,不要改动任何设置. 在 git-bash 或是 cmd 下,输入 n ...
- 好未来数据中台 Node.js BFF实践(一):基础篇
好未来数据中台 Node.js BFF实践系列文章列表: 基础篇 实战篇(TODO) 进阶篇(TODO) 好未来数据中台的Node.js中间层从7月份开始讨论可行性,截止到9月已经支持了4个平台,其中 ...
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(3):npm包管理、git github的使用
第三章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...
- node.js零基础详细教程(4):node.js事件机制、node异步IO操作
第四章 建议学习时间3小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- node.js零基础详细教程(5):express 、 路由
第五章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
随机推荐
- 使用graphql和apollo client构建react web应用
graphql是一种用于 API 的查询语言(摘自官网). 我们为什么要用graphql? 相信大家在开发web应用的时候常常会遇到以下这些问题:后端更新了接口却没有通知前端,从而导致各种报错:后端修 ...
- 训练指南 UVA - 11419(二分图最小覆盖数)
layout: post title: 训练指南 UVA - 11419(二分图最小覆盖数) author: "luowentaoaa" catalog: true mathjax ...
- 1、Flask实战第1天:第一个Flask程序
Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行, ...
- ASP.NET Core 2.2 基础知识(七) 选项模式
承接上一篇 配置, 选项模式是专门用类来表示相关配置的服务. 基本选项配置 新建一个选项类,该类必须是包含无参数的构造函数的非抽象类. public class MyOptions { public ...
- 详解jQuery的选择器
1.基本选择器 基本选择器是jQuery中最常用的选择器,也是最简单的选择器,它通过元素id.class和标签名等来查找DOM对象.在网页中,每个id名称只能使用一次,class允许重复使用. ♠ # ...
- POJ 2482 Stars in Your Window(扫描线+线段树)
[题目链接] http://poj.org/problem?id=2482 [题目大意] 给出一些点的二维坐标和权值,求用一个长H,宽W的矩形能框住的最大权值之和, 在矩形边缘的点不计算在内 [题解] ...
- 【权值分块】bzoj1503 [NOI2004]郁闷的出纳员
权值分块,离散化非常蛋疼,只能离散化搞…… 需要支持操作:删除<=某个值得所有权值==打标记 O(sqrt(n)) 码长和我的平衡树差不多……速度快3倍左右. #include<cstdi ...
- Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)
/etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see crontabs # Example of job definition: # .- ...
- 解决Ubuntu 14下,PhpStorm 9.x 编辑器界面中文乱码的问题
在Ubuntu 14中,安装了 PhpStorm 9.02,发现 软件界面中文乱码,但是源码编辑处却显示正常,如下图所示: 很奇怪,猜想,应该是软件界面字体有问题,选了一个没有包含中文字体的字体.先前 ...
- nullptr 与 constexpr
nullptr nullptr出现的目的自然是替换NULL的低位.C++可能会将NULL.0视为同一种东西.这取决于编译器是如何定义的,有的编译器定义NULL为 ( (void * )0) ,有的 ...