一. 伪装URL-SEO

二. 浏览器解析机制

  • 开发者按照W3C规范编写代码
  • 浏览器开发商也会按照相同的规范开发浏览器
  • 当我们把代码交给浏览器的时候,浏览器使用GPU按照相关的规范绘制图形和页面
  • 各个浏览器拥有属于自己的内核和渲染引擎
    • webkit内核+V8引擎:chrome,移动端中APP的webView

三. NODE

  • node.js也是webkit内核的:node不是编程语言,它和浏览器类似只是一个工具(基于V8引擎解析的)
  • 如果我把node工具安装在服务器上,这样的话,我们就可以使用JS来编写服务器端的程序了,最后把编写好的JS代码运行在服务器的node环境下即可,node会帮我们进行解析和渲染->"JS页可以开发后台程序了"
  • 无阻塞的(异步的)I/O操作
  • 基于事件驱动,单线程异步
  • JS运行在客户端浏览器中,能否对客户端的本地文件进行I/O操作?
    • 不能,如果能的话将会对客户端的安全造成恶劣的影响;但是有些操作是可以进行:例如上传图片.但是这种情况都是需要当前用户手动操作的
  • JS运行在服务器的node环境中,是否可以对服务器进行I/O操作?
    • 可以
  • 模块
    • 内置模块

      • NODE环境天生为JS提供的
      • HTTP
        • 这个模块中提供了一系列的方法,让我们创建服务并且监听端口号已经接受客户端的请求信息,把需要的内容返回给客户端
        • 我们一般会把创建服务的代码放在server自定义模块中,而且会把这个js放在当前项目的根目录下,所以:如果server在哪,相当于当前的服务所负责的项目就是哪一个
        let http=require("http");
        let server=http.createServer();//创建一个新的服务
        //[callback]:不仅仅是服务创建成功,而且需要客户端向当前这个服务发生请求,回调函数才会被执行
        server.listen(80,()=>{
        console.log("server is success! listening on 80 port!");
        }));//给创建的这个服务监听一个端口号
        //[port]:0-65535 //[callback]:当服务创建成功并且端口号也监听成功后执行的回调函数
        • 在服务器上,其他软件可能会占用80端口,导致80端口监听出错,所以服务器上不允许安装这些软件
        • 客户端如何向当前创建的这个服务发送请求
          • 在浏览器地址栏输入http://localhost:80/(服务在自己的电脑上,我们通过这种方式可以测试服务启动是否成功)
          • 在浏览器地址栏输入http://172.18.1.106:80/(这种方式不仅自己的电脑可以访问本地服务,别人的电脑如果和自己在同一个局域网下,也可以通过本机的ip访问到这个服务)
            • 同一个局域网:

              • 链接的是同一个WIFI(同一个网络)一般都是在同一个局域网下
              • 子网掩码,默认网关,DNS都相同,IP地址雷士但是不相同,则在同一个局域网下,如果确定在同一个局域网下,但是互相访问不了,把电脑的防火墙关掉
    • 自定义模块
      • 自己封装的
      • 新建一个JS,就相当于在NODE环境中创建了一个自定义模块
      • 模块和模块之间是独立的,相互不会影响
      • 导入自定义模块
        • require("./temp.js")中的目录必须加"./".只有加了它,才会先从当前目录中进行查找,找到自定义的模块
        • 不写"./",是直接到node_modules中找安装的第三方模块或者是NODE自带的内置模块的
        /*想把那个方法暴露到外面,供其他模块使用,需要做特殊的处理
        * module:NODE自带的模块管理对象
        * exports:是自带的把模块中方法导出的对象
        * */
        module.exports={
        fn:fn
        };
    • 第三方模块
      • 别人写好的,我们调取使用
      1. 安装第三方模块

        npm install less --save-dev
      2. 导入进来开始使用即可
  • 如何在js代码在NODE环境下执行?
    • 打开ws中,打开需要执行的JS文件,鼠标右键->run xxx.js (WS帮我们调取了NODE.exe然后把对应的JS执行的)

      • 在使用后手动在webstorm右上方的缓存进行清除
    • 在Terminal中使用node命令+文件名
      node 1.使用第三方模块.js
    • REPL命令(类似于浏览器的控制台,可以在这里输入JS代码执行)

四. NPM

NPM::模块或者包管理器,一般只要安装NODE就会自带NPM,在http://www.npmjs.com/这个网站下载

  • 我们可以把模块安装在全局下:npm install xxx -g,安装在全局下,不管是哪一个项目都可以基于命令来使用我们的模块进行相关的操作,但是也有一些自己的弊端:

    • 在项目中,不能通过require把模块导入进来,进行代码操作
    • 容易出现版本冲突,例如:我第一个项目用的是1.0版本,第二个用2.0版本,两个版本有一些区别,这样全局下到底是按照哪一个版本就无从规划了
    • 真实项目中,我们都会把模块安装在当前项目下,而不是全局,安装在当前项目中可以避免上述的两个问题,但是默认是不能使用命令操作了
  • 安装在当前项目中

    1. 在当前项目根目录中生成一个package.json文件,这个文件是当前项目所需要模块的配置清单:npm init -y

      • 安装的目录一定要用英文
    2. 我们以后再安装模块的时候,可以把安装的模块信息存储在这个配置清单中: npm install babel --save-dev
      • --save-dev:配置的是开发依赖模块信息
      • --save:配置的是生成依赖模块信息
    3. 我们在当前项目中把需要安装的模块都存储在配置清单中,到下一个项目的时候,如果需要依赖的模块和这个项目类似,我们只需要把清单拷贝到第二个项目中,执行:npm install就会把需要的模块批量进行下载->"跑环境"
    4. 查看当前模块的历史版本号:npm view xxx > xxx.txt
      npm view babel-cli > babel-version.txt
    5. 想要安装具体某一个版本的模块:npm install xxx@2.0.0 --save-dev
    6. 把安装在当前项目中的模块配置可以执行的命令
      package.json
      "script":{
      "babel":"babel ES6 -d ES5 -w"
      }
      • 输入npm run "name"就好

Node知识总结的更多相关文章

  1. node知识积累

    // 在node的应用程序中,执行异步操作的函数将回掉函数最为最后一个参数,回掉函数接收错误对象作为第一个参数 var fs = require('fs') fs.readFile('input.tx ...

  2. node知识

    node中的url url中的方法: parse,resolve,format: 方法parse: 例子:url.parse('http://imooc.com/course/list'); 结果:{ ...

  3. (翻译)《Hands-on Node.js》—— Introduction

    今天开始会和大熊君{{bb}}一起着手翻译node的系列外文书籍,大熊负责翻译<Node.js IN ACTION>一书,而我暂时负责翻译这本<Hands-on Node.js> ...

  4. 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

    了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发) Guillermo Rauch 编   赵静 译 ISBN 978-7-121-21769-2 2 ...

  5. node初体验(一)

    1.node.js是一个构建在chrome V8引擎上的javascript运行环境 2.node.js特点:单线程.事件驱动.非阻塞IO模型.轻量 3.node.js是单线程的(多个请求都是一个线程 ...

  6. Hybrid App 和 React Native 开发那点事

    简介:Hybrid App(混合模式移动应用)开发是指介于Web-app.Native-App这两者之间的一种开发模式,兼具「Native App 良好用户交互体验的优势」和「Web App 跨平台开 ...

  7. webpack4搭建Vue开发环境笔记~~持续更新

    项目git地址 一.node知识 __dirname: 获取当前文件所在路径,等同于path.dirname(__filename) console.log(__dirname); // Prints ...

  8. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  9. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

随机推荐

  1. Boolean operations between triangle meshes

    Boolean operations between triangle meshes eryar@163.com Abstract. Boolean operations is one of basi ...

  2. 通过jQuery的Ajax方式来提交Form表单

    通过jQuery的Ajax方式来提交Form表单 $.ajax({ url:ajaxCallUrl, type:"POST", cache:true, async:false, d ...

  3. POJ 1989 贪心

    题意: 思路: 从前到后扫一遍 如果k个数都出现过了 ans++ 从当前接着判断 最后答案就是ans+1 //By SiriusRen #include <cstdio> using na ...

  4. storm1.1运行时问题

    java.lang.NoClassDefFoundError: org/apache/curator/shaded/com/google/common/cache/CacheBuilder 程序并没有 ...

  5. 【Django】信号调度

    Django中提供了"信号调度",用于在框架执行操作时解耦. 通俗来讲,就是在某些动作发生时,信号允许特定的发送者去提醒一些接受者. * Django内置信号:** Model s ...

  6. python 内存中写入文件(read读取不到文件解决)

    from io import StringIO a = StringIO.StringIO('title') a.write('content1\n') a.write('content2') a.s ...

  7. Java反射之getInterfaces()方法

    今天学习Spring3框架,在理解模拟实现Spring Ioc容器的时候遇到了getInterfaces()方法.getInterfaces()方法和Java的反射机制有关.它能够获得这个对象所实现的 ...

  8. csdn课堂学习

    http://edu.csdn.net/course/detail/2495?ref=blog&loc=0 http://edu.csdn.net/course/detail/2140/336 ...

  9. 学习WWDC的好资源!

    学习WWDC的好资源. 大家都知道.要看Apple每年一度的WWDC,仅仅要到它的Developer站点去就能够了.那里有每年的研讨会视频,并且还能够下载每一个视频的SD或HD视频文件,以及相关的演示 ...

  10. 在OSG 实现的 oculus rift 效果

    在OSG 实现的oculus rift 效果,还不错 这个是Delta3d中实现的 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1eWluZ3Fpb ...