目录
1.概述和前端工具vscode安装
1.下载安装VScode
2.中文界面配置
3.插件安装
4.设置字体大小
5.开启完整的Emmet语法支持
2.Nodejs
1.Nodejs介绍与安装
2.快速入门-Hello World
3.Node - 实现请求响应
4.Node-操作MYSQL数据库
3.Es6
1.ES6的概述
2.ES6的语法:let和const命令
3.ES6的语法:模板字符串
4.ES6的语法:函数默认参数与箭头函数
1.函数默认参数
2.箭头函数
5.ES6的语法:对象初始化简写
6.ES6的语法:对象解构
7.ES6的语法:传播操作符【…】
8.ES6的语法:数组map和reduce方法使用
1.map()
2.reduce方法
4.NPM包管理器
1.简介
2.使用npm管理项目
3.修改npm镜像
4.npm install
5.其他命令
6.重点总结
5.Babel
1.简介
2.安装
3.Babel的使用
4.自定义脚本
6.模块化
1.简介
2.CommonJS规范
3.ES6模块化规范
4.ES6模块化写法2
7.Webpack
1.什么是Webpack
2.Webpack安装
3.初始化项目
4.js打包
5.Css打包
8.Vue-element-admin
9.探究package.json
前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互 。它从网页制作演变而来,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,==早期网站主要内容都是静态,以图片和文字为主==,用户使用网站的行为也以浏览为主。随着互联网技术的发展和HTML5、CSS3的应用,现代网页更加美观,交互效果显著,功能更加强大。
移动互联网带来了大量高性能的移动终端设备以及快速的无线网络,HTML5,node.jS的广泛应用,各类框架类库层出不穷。
当下国内的大部分互联网公司只有前端工程师和后端工程师,中间层的工作有的由前端来完成,有的由后端来完成。
官方网站:https://code.visualstudio.com/
打开然后一直下一步安装即可,文件路径自己配置
6.选择’zh-cn’
7.重启
为方便后续开发,建议安装如下插件
左边栏Manage -> settings -> 搜索 “fonts” -> Font size
设置中搜索 Emmet:启用如下选项,必要时重启vs(按住Tab可以自动补全)
6.视图
查看—> 外观—> 向左移动侧栏(默认),也可以看自己喜好
目标: 了解nodejs、并且在本地安装好这个软件
中文官网:http://nodejs.cn/
官网:https://nodejs.org/zh-cn/
介绍:
下载对应你系统的Node.js版本:
安装默认安装即可安装完成之后在命令行窗口查看自己的文件是否安装成功,非常建议默认安装,如不默认安装需要配置环境变量等
小结
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。文件后缀是
js
运行的命令是:node
//类似于java中的 System.out.println("");
console.log('Hello World!!!')
在终端(Ctrl+`)运行:node helloworld.js
结果:hello world!!!
浏览器的内核包括两部分核心:
小结
==Node.js是脱离浏览器环境运行的JavaScript程序,基于V8 引擎==
// 导入模块是require 就类似于import java.io
const http = require('http');
// 1: 创建一个httpserver服务 http.createServer:在计算机上创建服务
http.createServer(function(request,response){// 浏览器怎么认识hello server!!! //writeHead:告诉浏览器 'Content-type':'text/plain':以纯文本(plain)的方式解析hello server 这段数据response.writeHead(200,{'Content-type':'text/html'}); //'text/html':以html的方式// 给浏览器输出内容 response.end:结束响应,告诉客户端所有消息已经发送response.end("hello server!!!");
}).listen(8888); //.listen(8888):监听的端口
console.log("你启动的服务是:http://localhpst:8888以启动成功!!");
// 2: 监听一端口8888
// 3: 启动运行服务 node httpservlet.js
// 4: 在浏览器访问http://localhost:8888
类似于java的jdbc导jar包使用
在终端输入 npm install mysql
//1: 导入mysql依赖包, mysql属于第三方的模块就类似于 java.sql一样的道理
var mysql = require("mysql");
// 1: 创建一个mysql的Connection对象
// 2: 配置数据连接的信息
var connection =mysql.createConnection({//createConnection:建立连接host:"127.0.0.1",port:3306,user:"root",password:"000000",database:"testnodejs_db" //你要连接的数据库名
});
// 3:开辟连接:connect
connection.connect();
// 4: 执行curd
connection.query("select * from sm_user",function(error,results,fields){// 如果查询出错,直接抛出if(error)throw error;// 查询成功console.log("results = ",results);
});
// 5: 关闭连接
connection.end();
// 最后一步:运行node db.js 查看效果
如果想开发更复杂的基于Node.js的应用程序后台,需要进一步学习Node.js的Web开发相关框架 express,art-template、koa等。
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它可以理解为是JavaScript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。
ECMAScript的快速发展:
编程语言JavaScript是ECMAScript的实现和扩展 。ECMAScript是由ECMA(一个类似W3C的标准组织)参与进行标准化的语法规范。ECMAScript定义了:
[语言语法] – 语法解析规则、关键字、语句、声明、运算符等。
[类型]– 布尔型、数字、字符串、对象等。
[原型和继承]
内建对象和函数的
[标准库] – [JSON]、[Math]、[数组方法]、[对象自省方法]等。
ECMAScript标准不定义HTML或CSS的相关功能,也不定义类似DOM(文档对象模型)的[Web API],这些都在独立的标准中进行定义。ECMAScript涵盖了各种环境中JS的使用场景,无论是浏览器环境还是类似[node.js]的非浏览器环境。
ECMAScript标准的历史版本分别是1、2、3、5。
那么为什么没有第4版?其实,在过去确实曾计划发布提出巨量新特性的第4版,但最终却因想法太过激进而惨遭废除(这一版标准中曾经有一个极其复杂的支持泛型和类型推断的内建静态类型系统)。
ES4饱受争议,当标准委员会最终停止开发ES4时,其成员同意发布一个相对谦和的ES5版本,随后继续制定一些更具实质性的新特性。这一明确的协商协议最终命名为“Harmony”,因此,ES5规范中包含这样两句话
ECMAScript是一门充满活力的语言,并在不断进化中。
未来版本的规范中将持续进行重要的技术改进
2009年发布的改进版本ES5,引入了[Object.create()]、[Object.defineProperty()]、[getters]和[setters]、[严格模式]以及[JSON]对象。
ES6: 是JavaScript语言的下一代标准,2015年6月正式发布。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
小结:
ECMAScript是前端js的语法规范;可以应用在各种js环境中。如:浏览器或者node.js环境。
它有很多版本:es1/2/3/5/6,很多新特性,可以在js环境中使用这些新特性。
变量和常量的严格区分
Document
3.安装 open in browser 插件 然后使用快捷键 Alt+B 打开选择的浏览器
let、const、var的区别
let解决了变量穿透问题(见下面的例子for循环输出值,只有let解决了变量穿透问题,如果出现变量穿透,且变量使用let声明的,那么就会报错。 var和const都没有解决变量穿透问题)。
const解决了常量修改问题(只要是const声明的变量那他就不能再次修改变量值,如果再次修改就会报错常量的值是不建议修改的例如PI=3.14。 var和let没有解决常量修改问题)。
Document
小结:
let : 可变变量(局部)
const 是常量
var:原始变量(全局)
以前: 我们都是使用 ' ' 或者 " "来把字符串套起来。
现在: `` 【反引号】
Document
函数默认参数
在方法后添加默认值就好,你要是不给参数传值,js默认的参数值是undefined
Document
箭头函数简化函数的定义,可以让我们不用使用function关键字。(只是一种新的语法定义函数)
特点:
- 1.不需要function来创建函数
- 2.省去return关键字(如果你有逻辑体,你就不能省略)、省去大括号(如果有多个参数就不能省去括号)
- 3.继承当前上下文的 this 关键字
Document
它是指:如果一个对象中的key和value的名字一样的情况下可以定义成一个。
对象简写代码:
Document
对象简写案例:
Document
es6对象解构 -- 其实就是快速获取属性和方法的一种方式
对象取值提供两种方式的区别:
1.点方法后面跟的必须是一个指定的属性名称,中括号里面可以是变量
2.中括号里面的属性可以是数字,点方法后面的属性名不能是数字
3.动态为对象添加属性是,只能用中括号
对象解构代码:
Document
把一个对象的属性传播到另外一个对象中
对象传播操作符代码:
Document
对象传播操作符的案例代码:
Document
方法可以将原数组中的所有元素通过一个函数进行处理并放入到一个新数组中并返回该新数组。
举例:有一个字符串数组,希望转为int数组
数组map代码:
新建并定义 09-数组map.html
Document
reduce(function(),初始值(可选)) :
接收一个函数(必须)和 一个初始值(可选),该函数接收两个参数:
reduce() 会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是 第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数。
recude代码:
Document
官网:https://www.npmjs.com/
NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;也是Node.js的包管理工具,相当于后端的Maven 。
#在命令提示符 输入 npm -v 可查看当前npm版本
npm -v
#建立一个空文件夹,在命令提示符进入该文件夹 执行命令初始化
npm init
#按照提示输入相关信息,如果是用默认值则直接回车即可。
#name: 项目名称
#version: 项目版本号
#description: 项目描述
#keywords: {Array}关键词,便于用户搜索到我们的项目
#最后会生成package.json文件,这个是包的配置文件,相当于maven的pom.xml
#我们之后也可以根据需要进行修改。
#如果想直接生成 package.json 文件,那么可以使用命令
npm init -y
NPM的官方的管理包都是从https://www.npmjs.com/ 下载的,速度很慢
这里推荐淘宝的NPM镜像:https://npmmirror.com/
设置使用淘宝镜像:npm install -g cnpm --registry=http://registry.npm.taobao.org
以后执行下载命令可以使用:cnpm install xxx
#使用 npm install 安装依赖包的最新版,
#模块安装的位置:项目目录\node_modules
#安装会自动在项目目录下添加 package-lock.json文件,这个文件帮助锁定安装包的版本
#同时package.json 文件中,依赖包会被添加到dependencies节点下,类似maven中的
npm install jquery
#如果安装时想指定特定的版本
npm install jquery@2.1.x
#devDependencies节点:开发时的依赖包,项目打包到生产环境的时候不包含的依赖
#使用 -D参数将依赖添加到devDependencies节点
npm install --save-dev eslint
#或
npm install -D eslint
#全局安装
#Node.js全局安装的npm包和工具的位置:用户目录\AppData\Roaming\npm\node_modules
#一些命令行工具常使用全局安装的方式
npm install -g webpack
#npm管理的项目在备份和传输的时候一般不携带node_modules文件夹
npm install #根据package.json中的配置下载依赖,初始化项目
#更新包(更新到最新版本)
npm update 包名
#全局更新
npm update -g 包名
#卸载包
npm uninstall 包名
#全局卸载
npm uninstall -g 包名
npm:node package manager ,node包管理器,类似于maven
作用:1.快速构建nodejs工程- npm init-得到package.json这个文件下的内容如下:{"name": "npm",//工程名"version": "1.0.1",//版本号"description": "我是一个node工程",//描述"main": "index.js",//入口 js文件"scripts": {//运行脚本"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["node"],"author": "雙馬",//开发者"license": "ISC"//授权协议}类似于:pom.xml 文件作用管理依赖2.快速安装和依赖第三个模块,比如npm install mysql redis 等等2-1:快速安装依赖第三方模块?npm install 模块名 或者 npm i 模块名2-2:安装模块放到什么地方?安装的模块放入node_modules文件夹中2-3:模块和package.json有什么关系呢?通过npm install xxx会记录在package.json这个文件中就类似于maven中pom.xml,记录的作用:复用1:package.json记录模块2:将package.json拖进一个新的文件夹,通过npm install 可以把package.json所依赖的模块全部自动下载下来,这样可以避免重复下载模块。很方便的去集成的第三个模块,不建议直接将node_modules拷贝过去,因为node_modules文件里的文件很多,拷贝时间很长2-4:如果安装模块很慢怎么办?设置使用淘宝镜像 npm install -g cnpm --registry=http://registry.npm.taobao.org 以后安装使用cnpm install xxx命令2-5:如何运行?node xxxx.js 运行代码.js是可以省去的 终止命令行 ctrl+c2-6:如何下载多个?npm install jquery vuecnpm install jquery vue2-7:下载指定的版本号?npm install xxx@版本号具体版本号:查看官方网站2-8:如何卸载模块?npm uninstall vue jquery
ES6的某些高级语法在浏览器环境甚至是Node.js环境中无法执行。
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行执行。
这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。
在命令提示符里输入 npm init -y
然后在文件里面输入
//es6
let name = "shuangma";
const title = "中国";
let arr = [1,2,3,4,5];
let newarr = arr.map(a=>a*2);
console.log(name);
console.log(title);
console.log(newarr);
然后进行node src/example.js 测试查看结果
Babel的配置文件是 .babelrc ,存放在项目的根目录下,该文件用来设置转码规则和插件,基本格式如下。
{"presets": [],"plugins": []
}
presets字段设定转码规则,将es2015规则加入 .babelrc文件里:
{"presets": ["es2015"],"plugins": []
}
npm install --save-dev babel-preset-es2015
# npm install --save-dev csv-loader xml-loader
# 转码结果写入一个文件
mkdir dist1
# --out-file 或 -o 参数指定输出文件
babel src/example.js --out-file dist1/compiled.js
# 或者
babel src/example.js -o dist1/compiled.js
# 整个目录转码
mkdir dist2
# --out-dir 或 -d 参数指定输出目录
babel src --out-dir dist2
# 或者
babel src -d dist2
生成的es5转码后的 文件
{// ..."scripts": {// ... //这里一定要加,"build": "babel src\\example.js -o dist\\compiled.js"},
}
mkdir dist
npm run build
#也可以直接输入npm run build
模块化产生的背景
随着网站逐渐变成”互联网应用程序”,嵌入网页的Javascript代码越来越庞大,越来越复杂。
Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持”类”(class),包(package)等概念,也不支持”模块”(module)。
模块化规范
每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
// 工具类:
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
}// 导出成员:exports
module.exports = {sum,//这里两边一样可以直接写sumsubtract: subtract,multiply: multiply,divide: divide
}
//引入模块,注意:当前路径必须写 ./
const m = require('./四则运算.js')
console.log(m)
const r1 = m.sum(1,2)
const r2 = m.subtract(1,2)
console.log(r1,r2)
4.在终端测试
node module\commonjs\导入测试.js
CommonJS使用 exports 和 require 来导出、导入模块。
ES6使用 export 和 import 来导出、导入模块。
export function getList() {console.log('获取数据列表')
}
export function save() {console.log('保存数据')
}
//只取需要的方法即可,多个方法用逗号分隔
import { getList, save } from './userApi.js'
getList()
save()
注意:这时的程序无法运行的,因为ES6的模块化无法在Node.js中执行,需要用Babel编辑成ES5后再执行。
npm init -y
4.在es6中创建一个.babelrc文件
{"presets": ["es2015"],"plugins": []}
npm install --save-dev babel-preset-es2015
{// ..."scripts": {"test": "echo \"Error: no test specified\" && exit 1",//一定要注意这个,
//添加下面这句"build": "babel src -d dist"}
}
npm run build
8.运行程序
node .\dist\userTest.js
//第二种 导出成一个对象
export default {getList() {console.log('获取数据列表2')},save() {console.log('保存数据2')}
}
//第一种
//export function getList() {
// console.log('获取数据列表')
//}
//export function save() {
// console.log('保存数据')
//}
//直接给赋一个对象的名字取出使用即可
import user from './userApi.js'
user.getList()
user.save()
npm init -y
{"presets": ["es2015"],"plugins": []}
npm install --save-dev babel-preset-es2015
{// ..."scripts": {"test": "echo \"Error: no test specified\" && exit 1",//一定要注意这个,
//添加下面这句"build": "babel src -d dist"}
}
npm run build
node .\dist\userTest.js
Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。
从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。
中文官网:https://www.webpackjs.com/
#二选一
npm install -g webpack webpack-cli webpack-dev-server
cnpm install -g webpack webpack-cli webpack-dev-server
webpack -v
步骤:
1:创建一个nodejs项目 npm init -y
2:创建一个src目录
3:在src存放两个需要合并的util.js和common. js
4:准备一个入口文件main.js, 其实就是模块集中进行引入
#js打包
5:在根目录下定义个webpack . config.js文件配置打包的规则
6:执行webpack查看效果
npm init -y
util.js
exports.add = function (a, b) {return a + b;
}
common.js
exports.info = function (str) {document.write(str);
}
const path = require("path"); //Node.js内置模块
//定义js打包的规则
module.exports = {//入口函数从哪里开始进行编译打包entry: './src/main.js', //编译成功以后把内容输出到哪里去output: {//定义输出的指定目录,__dirname:当前文件所在路径(当前项目根目录) 生成一个dist文件夹path: path.resolve(__dirname, './dist'), //合并的js文件存储在dist/bundule.js文件中filename: 'bundle.js' //输出文件}
}
webpack #dev: "webpack --mode=development"
#执行后查看bundle.js 里面包含了上面两个js文件的内容并进行了代码压缩
如果出现webpack : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本错误
打开电脑的powerShell窗口,记住一定要以管理员身份打开
在窗口中输入set-ExecutionPolicy RemoteSigned,然后在输入y
"scripts": {//...,"dev": "webpack --mode=development"}
运行npm命令执行打包
npm run dev
Document
webpack -h(帮助文档)可以查看所有的webpack的命令
webpack -w(实时监听),如果修改了打包前的文件保存之后,会自动添加到bundle.js文件中
Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。
Loader 可以理解为是模块和资源的转换器。
首先我们需要安装相关Loader插件
css-loader 是将 css 装载到 javascript
style-loader 是让 javascript 认识css
现在CSS可以直接打包,不用再安装loader了,如果出现问题,还是建议安装最新版进行操作
npm install --save-dev style-loader css-loader
const path = require("path"); //Node.js内置模块
module.exports = {//...,output:{//其他配置},module: {rules: [ { test: /\.css$/, //打包规则应用到以css结尾的文件上use: ['style-loader', 'css-loader']} ] }
}
body{background:pink;
}
require('./style.css');
webpack
把这些知识都学习完毕了,那我们之后学习 Vue 就轻松啦!这些都是现在前端工程师的基础!
vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。
官网地址:https://panjiachen.github.io/vue-element-admin-site/zh/
==运行工程和编译工程==
# 克隆项目
git clone https://github.com/PanJiaChen/vue-element-admin.git
# 进入项目目录
cd vue-element-admin
# 安装依赖
npm install
# 建议不要用 cnpm 安装 会有各种诡异的bug 可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org
# 本地开发 启动项目
npm run dev
注意如果老是安装失败:
启动完成后会自动打开浏览器访问 项目的端口号, 你看到下面的页面就代表操作成功了。
小结
nodejs项目几要素
上一篇:三只手相亲