node入门学习(二)
一、模块系统
1.创建模块和引用模块
//如何创建一个模块
exports.hello = function(){
console.log('hello worl');
};
//这创建了一个模块
//如何引用模块 //1.require();
var hello = require('./module.js'); hello.hello(); //2. var {hello} = require('./module.js'); hello();
2.服务端的模块
//服务端的模块
var http = require('http'); http.createServer(function(request,response){ }); //http 模块放在哪里的呢? 模块的加载顺序又是什么样的呢? /*
* 1. 当require(); 一个模块的时候 首先会去 文件模块缓冲区去找
* 如果存在,直接exports出来
* 2.如果没有找到,在去原生模块缓冲区去找 => 原生模块 => 缓存 => exports
*
* 3.没有找到就去文件系统
*
*/

二、函数
//其实就javascript中的函数。
var lan = function(lang){
console.log(lang);
} function say(factory,lang){
factory(lang);
} say(lan,'chinese'); var http = require('http'); http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/plain;charset=utf8'});
response.write('hello world');
response.end();
}).listen(3000);
三、路由
var http = require('http');
var url = require('url');
http.createServer(function(request,response){
var pathname = url.parse(request.url,true).pathname;
//http://localhost:8080/user
console.log(pathname);
//pathname /user
/*
http://localhost:8080/admin
pathname => /admin
*/
response.writeHead(200,{'Content-Type':'text/plain;charset=utf8'});
response.write('这个路径是:' + pathname);
response.end();
}).listen(8080);
四、全局对象
1.在 node中有一个全局对象为global。所有的全局对象都可以在global找到。当然不包括他自己。而在浏览器中的全局对象为window
2.__filename 表示当前正在执行的脚本的文件名。它将输出这个文件的绝对路径
3.__dirname 表示当前正在执行脚本的目录
4.setTimeout => clearTimeout || setInterval => clearInterval
5.console => api较多
6.process 方法较多。 主要描述node 的进程情况
五、GET、POST请求。
1.GET请求(其实就是参数带在url上吧)
var http = require('http');
var url = require('url');
var fs = require('fs');
var data = '';
var readStream = fs.createReadStream('get.html');
readStream.on('data',function(chunk){
data += chunk;
});
readStream.on('end',function(){
console.log('获取html完毕');
});
http.createServer(function(request,response){
var params = url.parse(request.url,true).query;
var userName = params.userName;
var userPhone = params.userPhone;
//http://localhost:8888/get.js?userName=node&userPhone=10086
console.log(userName,userPhone);// node 10086
response.writeHead(200,{'Content-Type':'text/html;charset=utf8'});
if(!!userPhone && !!userName){
response.write('<h1>保存成功</h1>')
}else{
response.write(data);
};
response.end();
}).listen(8888);
console.log('node server start 127.0.0.1:8888')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="./get.js" method="GET">
<input type="text" name="userName">
<input type="text" name="userPhone">
<input type="submit" value="提交">
</form>
</body>
</html>
2.POST请求 (参数没有暴露在url上获取参数的方式和GET有很大的区别);
var http = require('http');
var querystring = require('querystring');
var fs = require('fs');
var data = '';
var readStream = fs.createReadStream('post.html');
readStream.on('data',function(chunk){
data += chunk;
});
readStream.on('end',function(){
console.log('获取html完毕');
});
http.createServer(function(request,response){
var postData = '';
request.on('data',function(chunk){
postData += chunk;
});
request.on('end',function(){
var params = querystring.parse(postData);
console.log(postData);
var userName = params.userName;
var userPhone = params.userPhone;
//http://localhost:8888/post.js
console.log(userName,userPhone);// node 119
response.writeHead(200,{'Content-Type':'text/html;charset=utf8'});
if(!!userPhone && !!userName){
response.write('<h1>保存成功</h1>')
}else{
response.write(data);
};
response.end();
});
}).listen(8888);
console.log('node server start 127.0.0.1:8888')
post.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="./post.js" method="POST">
<input type="text" name="userName">
<input type="text" name="userPhone">
<input type="submit" value="提交">
</form>
</body>
</html>
六、结束语
Node.js的入门教程就完毕了。写得比较简洁,也没有贴图。我觉得作为一个程序员。学习能力固然重要,但更重要的是动手能力。每个方法都去敲一遍了,自然就明白这个方法
有什么用了。没有什么东西去敲一遍解决不了的,如果非要说有那就多敲2遍。
Node.js的基础知识很多,这2篇博文的挑了些,比较重要的说了下。其中主要是文件系统,文件流,路由,GET\POST。模块知识在工作中会经常遇到。当然在实际项目会用不到这些,因为都会借助express框架。来进行项目开发。但当我们了解其原理。操作起来就根据得心应手了。
没有什么坎坷是过不去的,加油!Comm on!
node入门学习(二)的更多相关文章
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- SpringMVC入门学习(二)
SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...
- node入门学习(一)
一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...
- git入门学习(二):新建分支/上传代码/删除分支
一.git新建分支,上传代码到新的不同分支 我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...
- Egg入门学习(二)---理解service作用
在上一篇文章 Egg入门学习一 中,我们简单的了解了Egg是什么东西,且能做什么,这篇文章我们首先来看看官网对Egg的整个框架的约定如下,及约定对应的目录是做什么的,来有个简单的理解,注意:我也是按照 ...
- node入门(二)——gulpfile.js初探
本文关于gulpfile.js怎么写,利于完成个性化需求.本文开发环境默认已安装node,详情参考<node入门(一)——安装>. 一.安装gulp npm install -g gulp ...
- dubbo入门学习(二)-----dubbo hello world
一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...
- iOS中 Swift初级入门学习(二)
// Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation /* // 控制语句 // for - in // 遍历字符 ...
- node.js学习二---------------------同步API和异步API的区别
/** * node.js大部分api都有同步的方法,同步方法名后面都会带有Sync,js编译的时候,同步代码会立即执行,异步代码会先存到异步池中,等同步代码执行完后它才会执行异步:不会阻塞线程,没有 ...
随机推荐
- 洛谷 P1306 斐波那契公约数
洛谷 P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? ...
- 9.22 开课第十九天(window对象)
DOM:文档对象模型 --树模型 文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏 ...
- const限定符用法汇总
const限定符限定变量的类型是一个常量,对象一旦创建后其值就无法改变,所以const对象必须初始化. 初始化 const int i = get_size(); //运行时初始化 const int ...
- 【LG3250】[HNOI2016]网络
[LG3250][HNOI2016]网络 题面 洛谷 题解 30pts 对于\(m\leq 2000\),直接判断一下这个个点是否断掉一个交互,没断掉的里面取\(max\)即可,复杂度\(O(m^2\ ...
- Gitlab+Jenkins学习之路(二)之gitlab部署
1.安装依赖及gitlab [root@linux-node1 ~]# yum install -y curl policycoreutils openssh-server openssh-clien ...
- 如何打war包和jar包
1.jar包的导出 答:右键项目,export—jarfile 生成. 2.war包的导入 答:方法一:右键项目,export—WAR file 生成. 方法二:[ant文件]—[deploy-be ...
- 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...
- curl命令实现上网认证登录
为了想让组里的服务器连外网下数据,需要命令行上网登录.与很多高校的上网方式一样,大气所上网采用的是用户帐号登录验证的方法.上网需要需要先开浏览器,然后打开网页输入帐号密码登录.参考了前人的一些帖子,最 ...
- 部署jenkins问题
总结:配置的url,jenkins部署的ip必须有开放,否则发布会超时失败
- linux(模糊批量删除文件)删除指定文件夹中某个文件除外的其他文件
# shopt -s extglob# rm -fr !(file1)如果是多个要排除的,可以这样:# rm -rf !(file1|file2)首先科普下shopt -s extglobBash S ...