1, hello world

console.log('hello world');

这是在后台打印hello world, 没什么意义, 以为nodejs主要应用于web 服务端, 所以可以使用下面的代码在浏览器上显示hello world.

var http = require('http');http.createServer(function(request, response) {response.writeHead(200,{'Content-type':'text/html'})response.write('Hello World');console.log('hehe')response.end('')
}).listen(80);
console.log('Server is running at 127.0.1.1:80')

其中 var http=requre('http')引入http模块,类似python 中import。http.createServer函数时用来创建一个HTTP服务器, 并将requestListener作为reqeust事件的监听函数。 语法为

http.createServer([requestListener])

接收参数:

requestListener 请求处理函数,自动添加到 request 事件,函数传递两个参数:

req  请求对象,想知道req有哪些属性,可以查看 “http.request 属性整合”。res   响应对象 ,收到请求后要做出的响应。想知道res有哪些属性,可以查看 “http.response属性整合”。
response.writeHead(200,{'Content-type':'text/html'})//写响应header
response.write('Hello World');//写响应body
response.end('')//最后这个一定要加, 表示响应结束, 如果不加浏览器页面就是一直加载的状态。 

2, 调用函数(内部+外部)

内部函数调用, 即函数定义于函数调用都在同一文件, 比如上面的例子我们可以将匿名监听函数内部的操作用一个函数myfun代替, 在createServer中可以直接调用

//main.js
var http = require('http');
function myfun(req, res) {res.writeHead(200,{'Content-type':'text/html'})res.write('I am myfun')res.end()
}
http.createServer(function(request, response) {myfun(request, response) }).listen(80);
console.log('Server is running at 127.0.1.1:80')

如果函数定义在另外的文件(通常存在于大型项目的情况, 函数的定义和调用往往要分开, 存在不同的文件), 例如在在文件models里面有文件functions.js里面定义了我们想要调用的函数myfun, 我们可以这么写

//models/functions.js
function myfun(req, res) {res.writeHead(200,{'Content-type':'text/html,charset=utf-8'})res.write('I am myfun')res.end()
}
module.exports=myfun

除了定义myfun函数之外, 还要有加上最后的module.exports=myfun来表明函数可以被其他文件里的程序调用。 然后在监听函数所在文件中引入这个函数就可以调用了, 注意此时变量myfun就是一个函数变量, 可以通过这个函数变量调用定义的函数。

var http = require('http');
var myfun=require('./models/functions.js')
http.createServer(function(request, response) {myfun2(request, response) }).listen(80);
console.log('Server is running at 127.0.1.1:80')

如果需要调用其他文件中定义的多个函数可以这么做

module.exports.myfun1=myfun1
module.exports.myfun2=myfun2

另外一种方式就是下面这种。

//models/function.js
module.exports={myfun: function(req, res) {res.writeHead(200,{'Content-type':'text/html,charset=utf-8'})res.write('I am myfun')res.end()
}, myfun2: function(req, res) {res.writeHead(200,{'Content-type':'text/html,charset=utf-8'})res.write('I am myfun2')res.end()
}
}

这时候module.exports被赋值为一个对象, 所以在调用文件中引入的也是这对象而非函数变量, 所以调用方式略有不同。

var http = require('http');
var functions=require('./models/functions.js')
http.createServer(function(request, response) {functions.myfun2(request, response) }).listen(80);
console.log('Server is running at 127.0.1.1:80')

此时除了可以用上面的.调用之外还可以用下面的方式调用

function['myfunction'](request, response)

这种调用方式在后续的router应用中非常有用。

3, 调用模块(面向对象)

这里我们想要实现一个继承关系,在nodejs中类的定义也是用function关键字, 而不是class, 在类中用this关键字指定类成员变量和成员函数。 首先建立一个User类。

//--------------User.js--------------
function  User(id,name,age){this.id=id;//属性this.name=name;//属性this.age=age;//属性this.enter=function(){//方法console.log("进入图书馆");}
}
module.exports  =  User;

然后再建立一个Teacher类, Teacher继承于User,首先是要引入User,类似于上面的函数的调用。 这里需要注意的是在子类中对父类进行初始化的特殊写法, User.apply(this,[id,name,age]);//继承User

var  User  =  require('./User');
function  Teacher(id,name,age){User.apply(this,[id,name,age]);//继承Userthis.teach=function(res){//自有方法res.write(this.name+"老师讲课");}
}
module.exports    =    Teacher;

Nodejs 学习(一)相关推荐

  1. NodeJS学习笔记: RESTful —— 为本系列做个小结

    前言 本人不是技术专家,该笔记只是从使用语言进行开发的层面上记录一些体会,不包含也不想尝试从源码或者更深的层次去讨论语言本身的优劣.文章内容是笔者的个人感悟,既不保证正确性,也不保证别人能看懂. 这是 ...

  2. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  3. Nodejs学习笔记(七)——接口API

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...

  4. Nodejs学习笔记(六)——Mysql模块

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...

  5. Nodejs学习笔记(四)——http协议与服务器

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(五)--expr ...

  6. Nodejs学习笔记(二)——模块

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记( ...

  7. Nodejs学习笔记(一)——基础之全局对象、包和npm

    [目录] Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记(五)--express ...

  8. nodejs学习笔记(上)

    nodejs学习笔记 (上) 通过学习需要做到的是 了解 前后端是如何进行交互的 nodejs也是使用javaScript进行编写的 javaScript在不同的运行环境中有不同的作用 在浏览器内核中 ...

  9. Nodejs学习路线图

    Nodejs学习路线图 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascri ...

  10. nodejs学习_安装npm及cnpm(Windows)

    [工具官网] Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 一.安装node.js 1.前往node.js官网下载并安装工具,我 ...

最新文章

  1. 记事本写python怎么运行-从头学Python之编写可执行的.py文件
  2. [THUPC2019]不等式/[51Nod1598]方程最小值
  3. mesh 协调器 路由器_关于Mesh网络中,协调器和路由器之间的几个问题?
  4. Gartner 发布2019年超融合魔力象限:新增深信服一员!
  5. C++安全方向openssl:绪论
  6. ORACLE 建库过程总结
  7. 计算机房消防设计规范,发电机房消防设计规范要求有哪些
  8. U盘一键直接安装原版win7
  9. 在我的ibmR40上装osx86
  10. 《系统之美》— 忒修斯悖论
  11. android gpuimage 直播,1小时学会:最简单的iOS直播推流(四)如何使用GPUImage,如何美颜...
  12. 18.网络技术——BGP的原理+实验题(后附练习题)
  13. 行测做的慢,如何提升做题速度?怎么提升正确率?
  14. thinksnsv4.6运行php,SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例...
  15. 存储过程——天使还是魔鬼
  16. Xilinx_ISE14.7安装包网盘下载
  17. 让div在屏幕中居中(水平居中+垂直居中)的几种方法
  18. matlab解薛定谔方程,有限差分法解薛定谔方程与MATLAB实现
  19. 「自控元件及线路」0 电磁学基本概念与定律
  20. C语言对于通信工程的重要性,计算机网络技术对通信工程学生的重要性-计算机网络论文-计算机论文(6页)-原创力文档...

热门文章

  1. linux查看不了防火墙设置,linux怎么样去查看防火墙设置
  2. 简述 · 如何理解base64编码
  3. 作为聚名代理,蜗牛如何省钱的?
  4. python:Redis面试题合集1
  5. font-weight 对应ps中的粗细
  6. 【python绘图库turtle实战】使用python绘图库turtle绘制:太阳花、彩虹线与小黄人【含完整源码】
  7. android 虚拟机g,安卓手机系统安装虚拟机
  8. 在上传文件时限制上传文件的大小,并捕捉超过文件大小限制的异常
  9. annotation是什么,用处,举例
  10. vscode显示函数列表