3.前端Node.js

一、基本概念

        Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

二、模块系统

        为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

        对于一个模块,其内部的变量和方法对外都是不可见的。Node.js 提供了 exportsrequire 两个对象,其中 exports 是模块共享的对象,require 用于从外部获取一个模块的共享对象,即所获取模块的 exports 对象。

const util=require('util');//获取共享对象
module.exports={};//设置共享对象

        exports 和 module.exports 的使用:如果要对外暴露属性或方法,就用 exports 就行,要暴露对象就用 module.exports。

三、NPM

        NPM是随同Node.js一起安装的包管理工具,能解决Node.js代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

        下载好之后,下载包就放在了工程目录下的 node_modules 目录中,在 package-lock.json 配置文件中会记录所有下载包的信息,NPM下载和删除包的语法:

//下载时添加-D参数可将包设置为开发依赖
//下载时添加-g参数可将包设置为全局包
npm install {module_name}@{module_version}
npm uninstall {module_name}

         在项目根目录中,需要创建一个 package.json 包管理配置文件用来记录项目信息及所需依赖,从而在删除 node_modules 目录后方便共享。package.json创建语句:

npm init -y

四、ES6

        ES6,全称 ECMAScript 6.0,是 JavaScript 的下一个版本标准,2015.06 发版。ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。以下介绍 ES6 的部分特性。

        1.let 和 const:let 声明的变量只在 let 命令所在的代码块内有效。const 声明一个只读的常量,一旦声明,常量的值就不能改变。

        2.模板字符串:模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。注意:模板字符串中的换行和空格都是会被保留的。

let name = "Mike";
let age = 27;
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info);
// My Name is Mike,I am 28 years old next year.

        3.类:在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。class 的实例化必须通过 new 关键字。

//类定义,定义属性和方法时无需使用关键字,且必须在访问前对类进行定义
class Class{
    a=1;
    b='123';
    f(){
        console.log('This is a class');
    }
};
let c=new Class();

        4.对象解构:解构赋值是对赋值运算符的扩展。他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。

let obj={
    a:1,
    b:'123',
    c:true,
    f:function(){
        console.log('f');
    }
};
//可直接获取对象的一个或多个属性及方法,变量名需要对应
let {a,b,c,f}=obj;
console.log(a);
console.log(b);
console.log(c);
f();

        5.对象传播:拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。

let person = {name: "Amy", age: 15};
let p1 = { ...person };
console.log(p1);
//属性名相同时,前面的会被覆盖
let p2 = { ...person,name: "Lucy"};
console.log(p2);

        6.模块规范:ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。ES6 的模块化分为导出(export)与导入(import)两个模块。

//导入对象
import util from 'util'
//导出对象
export default{
}

五、babel

        babel 是一款 JavaScript 编译器,它可以把 ECMAScript 2015+ 的代码转译成低版本兼容的代码。

        全局安装:

npm install -g babel-cli 
npm install -D babel-preset-es2015

        转码:

//首先需要在项目目录下创建.babelrc配置文件
{
    //目标版本
    "presets":["es2015"],
    "plugins": []
}

//执行命令
babel {dir_name|file_name} -d {out_dir} -o {out_file}

六、webpack

        webpack 是一个前端资源打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

        全局安装:

npm install -g webpack webpack-cli

        打包js:

//在项目目录下创建配置文件webpack.config.js
//导入path模块
const path=require('path');
module.exports={
    //打包的入口函数
    entry:'',
    output:{
        //打包路径
        path:path.resolve(__dirname,''),
        //生成文件名
        filename:''
    }
}

//执行命令
webpack

        打包css:

//打包css需要先下载两个包
npm install -g style-loader css-loader

//修改配置文件
//导入path模块
const path=require('path');
module.exports={
    //打包的入口函数
    entry:'',
    output:{
        //打包路径
        path:path.resolve(__dirname,''),
        //打包名
        filename:''
    },
    module: {
        rules: [{
            //打包规则应用到以css结尾的文件上
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
        }]  
    }
}

//执行命令
webpack
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值