大前端基础 es6新语法, node.js 和 包管理器

1.Node.js 入门

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

1.1 Node.js 安装

node.js
官网
中文网

安装无脑下一步即可。然后打开vscode
前端开发工具vscode的插件按照和简单使用

打开命令行终端:Ctrl + Shift + y
进入到程序所在的目录,终端

输入 node -v
在这里插入图片描述
证明安装完成。

js通常是纠结的是要不要加分号; 因为之前java都是加分号的,这里js因为换行就不需要加了,所以今天的js都不加分号,当然你的java习惯改不过来也可以加上,良好的编码习惯可以避免很多错误

1.2 快速入门

新建文件夹,然后新建test.js

console.log('Hello Node.js')

打开命令行终端:Ctrl + Shift + y
输入 node test.js

在这里插入图片描述

1.3服务器端应用开发

const http = require('http')
http.createServer(function (request, response) {
    // 发送 HTTP 头部
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'})
    // 发送响应数据 "Hello World"
    response.end('Hello Server')
}).listen(8888)
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/')

一样运行 node test.js
在这里插入图片描述

访问 http://127.0.0.1:8888/

在这里插入图片描述
停止服务:ctrl + c

如果想开发更复杂的基于Node.js的应用程序后台,需要进一步学习Node.js的Web开发相关框架
express,art-template等

2.ES6入门

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

新建html

<!--DOCTYPE:告诉浏览器使用什么规范(默认是html)-->
<!DOCTYPE html>
<!--语言 zh中文 en英文-->
<html lang="en">
<!--head标签代表网页头部-->

<head>
    <!--meta 描述性标签,表示用来描述网站的一些信息-->
    <!--一般用来做SEO(搜索)-->
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!--网站标题-->
    <title>Document</title>
    <script src="../js/es6.js"></script>
  
</head>

<body>
  
</body>

</html>

在js下面新建es6.js

2.1 let声明变量

之前我们所有的变量都是var变量,所类型语言会造成一些问题,不够严谨。

// var 声明的变量没有局部作用域
// let 声明的变量 有局部作用域
{ 
    var a = 0 
    let b = 1 
}
console.log(a) // 0 
console.log(b) // ReferenceError: b is not defined

上面var就会通过,而let会报错,解决数据穿透的问题。

// var 可以声明多次 
// let 只能声明一次
var a = 1
var a =2
let b =1
let b = 2  //报错

以上var可以通过,let会报错

// var 会变量提升
// let 不会变量提升
console.log(a)
var a = 0;
console.log(b)
let b = 0;

上面var是undefined 可以正常运行
let控制台就会报错

2.2 const声明常量


const PI = Math.PI;
PI = 1;   // Assignment to constant variable.

上面声明的常量改变就会报错,var就没得这个

2.3 解构赋值

解构赋值是对赋值运算符的扩展

//传统的赋值
let a =1
let b =2
let c = 3
//  解构赋值
let [x,y,z] = [4,5,6]
//传统的赋值
let  user = {name: '张三', age: 18}
let name1 = user.name
let age1 = user.age
//  解构赋值
let {name,age} = user

注意 let {name,age}必须和user属性相同

2.4 模板字符串

//传统的赋值
let  name = "张三"
let age = 10
let str = "我叫" + name + "今年" + age
//  解构赋值
let str2 = `我叫 ${name} 今年 ${age}`
console.log(str2)

注意这用的不是单引号也不是双引号,是反引号 `

2.5 声明对象简写

const name = "张三"
const age = 18
//传统的赋值
let user = {name:name,age:age}
// 声明对象简写
let user2 = {name,age}

2.6 箭头函数


//传统
var f1 = function(a,b){
    return a + b
}
// es6
var f2 = (a,b) => a + b

3. NPM包管理器

NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;也是Node.js的包管理工具,相当于前端的Maven。
在这里插入图片描述
安装完node.js就可以查看 npm版本

3.1 初始化

新建npm文件夹
在命令行进入文件夹
npm init
在这里插入图片描述

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

一路下一步,最终得到一个json,也可以写入规定的命名

#name: 项目名称
#version: 项目版本号
#description: 项目描述
#keywords: {Array}关键词,便于用户搜索到我们的项目
#最后会生成package.json文件,这个是包的配置文件,相当于maven的pom.xml

npm init -y

直接生成,全部默认。

3.2 修改npm镜像

NPM官方的管理的包都是从 http://npmjs.com下载的,但是这个网站在国内速度很慢。
这里推荐使用淘宝 NPM 镜像 http://npm.taobao.org/

#经过下面的配置,以后所有的 npm install 都会经过淘宝的镜像地址下载 
npm config set registry https://registry.npm.taobao.org 
#查看npm配置信息 
npm config list 123

3.3 npm install

#使用 npm install 安装依赖包的最新版,
#模块安装的位置:项目目录\node_modules
#安装会自动在项目目录下添加 package-lock.json文件,这个文件帮助锁定安装包的版本
#同时package.json 文件中,依赖包会被添加到dependencies节点下,类似maven中的

npm install jquery
npm install jquery@2.1.x
#更新包(更新到最新版本) 
npm update 包名 
#全局更新 
npm update -g 包名 
#卸载包 
npm uninstall 包名 
#全局卸载 
npm uninstall -g 包名

4.Babel

ES6的某些高级语法在浏览器环境甚至是Node.js环境中无法执行。
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行执行
安装

npm install -g babel-cli

检查是否安装完成

babel --version

在这里插入图片描述

4.1Babel 实战

新建babel文件夹

在babel目录下执行

npm init -y 

新建文件夹src,新建example.js

// 转码前 
// 定义数据
 let input = [1, 2, 3] // 将数组的每个元素 +1 
 input = input.map(item => item + 1) 
 console.log(input)

写一些es6的语法

配置 .babelrc
在src同层目录新建 .babelrc
在这里插入图片描述

{
"presets": ["es2015"],
 "plugins": [] 
}

安装转码器,在项目中安装

npm install --save-dev babel-preset-es2015

然后转码

mkdir dist
babel src/example.js --out-file dist/compiled.js

在这里插入图片描述
生成的文件已经转换成var了

5. 模块化

5.1 CommonJS规范

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
新建js

mokuai-common.js

// 定义成员:
const sum = function (a, b) {
    return a + b
}
const subtract = function (a, b) {
    return a - b
}
const multiply = function (a, b) {
    return a * b
}
const divide = function (a, b) {
    return a / b
}
// module.exports =
// {
//     sum: sum,
//     subtract: subtract,
//     multiply: multiply,
//     divide: divide
// }

//简写
module.exports =
{
    sum,
    subtract,
    multiply,
    divide
}

在原来的同目录js测试

//引入模块,注意:当前路径必须写 ./ 
const m = require('./mokuai-common.js') 
console.log(m) 
const r1 = m.sum(1,2) 
const r2 = m.subtract(1,2) 
console.log(r1,r2)

控制台运行
在这里插入图片描述

5.2 ES6模块化规范

后面vue用的更多的是es6规范
新建 userApi.js

export function getList(){
    console.log("获取数据列表")
}

export function save(){
    console.log("保存数据")
}

调用

import {getList,save} from './userApi'
getList()
save()

当然这个时候无法直接运行,因为是es6的语法
需要Batel

6.Webpack

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

6.1 安装

npm install -g webpack webpack-cli 

安装完成查看版本 确定是否完成

webpack -v

在这里插入图片描述

6.2 打包js

先运行

 npm init -y

新建src目录,新建common.js,utils.js,main.js
common.js

exports.info = function (str) {
    document.write(str);
}

utils.js

exports.add = function (a, b) { 
    return a + b; 
}

main.js

const common = require('./common'); 
const utils = require('./utils');

 common.info('Hello world!' + utils.add(100, 200));

webpack目录下 新建 webpack.config.js

const path = require("path");//Node.js内置模块
module.exports = {
    entry: './src/main.js',//配置入口
    output: {
        path: path.resolve(__dirname, './dist'),//输出路径,__dirname:当前文件 所在路径
        filename: 'bundle.js'//输出文件
    }
}

在webpack下运行

 webpack --mode=development

这样就生成打包后的js
在这里插入图片描述
可以用另外一种方式打包,打包packge.json新新增

"dev": "webpack --mode=development"

然后运行

npm run dev

结果相同

6.3 Css打包

6.3.1 安装style-loader和 css-loader

Webpack 本身只能打包js,对于css需要额外的安装插件

npm install --save-dev style-loader css-loader

安装完成,我的packge.json会有引入
在这里插入图片描述

6.3.2 修改webpack.config.js

修改后的js

const path = require("path");//Node.js内置模块
module.exports = {
    entry: './src/main.js',//配置入口
    output: {
        path: path.resolve(__dirname, './dist'),//输出路径,__dirname:当前文件 所在路径
        filename: 'bundle.js'//输出文件
    },
    module: {
        rules: [{
            test: /\.css$/, //打包规则应用到以css结尾的文件上 
            use: ['style-loader', 'css-loader']
        }]
    }
}

6.3.3 测试

在src下新增style.css

body {
    background: pink;
}

在main.js第一行引入

require('./style.css');

运行

npm run dev

然后新生成dist下的js就包含js和css合并加密

总结 对于web运行我们还是用var吧,就不用转码了 ,对于app小程序可以采用es6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值