代表:moment axios
库,本质上是一些函数的集合。每次调用函数,实现一个特定的功能 工具箱
使用库的时候,把库当成工具使用,需要自己控制代码的执行逻辑。
代表:vue、angular、react、bootstrap
框架,是一套完整的解决方案
使用框架的时候,框架实现了大部分的功能,我们只需要按照框架的规则写代码
MVVM思想:一种软件架构模式,决定了写代码的方式。
MVVM通过数据双向绑定
让数据自动地双向同步 不在需要操作DOM
之前的思想,原生dom驱动。无论修改什么页面内容,先找对象,操作dom。
现在的思想,vue 数据驱动 。直接操作数据即可。数据变化,试图自动更新。
1. 在vue中,不推荐直接手动操作DOM!!!
2. 在vue中,通过数据驱动视图,不要在想着怎么操作DOM,而是想着如何操作数据!!
vue-cli
也叫vue脚手架,vue-cli
是vue官方提供的一个全局命令工具,这个命令可以帮助我们快速的创建一个vue项目的基础架子。
//查看镜像源使用状态:
npm get registry
//全局切换镜像源:
npm config set registry http://registry.npm.taobao.org
//全局切换官方镜像源
npm config set registry https://registry.npmjs.org/
npm install -g @vue/cli
# OR
yarn global add @vue/cli
vue
vue --version
vue create 项目名(不能用中文)
npm run serve
npm run build
yarn serve
yarn build
注意:我们在项目无法找到webpack.config.js文件,因为vue把它隐藏。
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
// 配置端口号
devServer: {
port: 81
}
})
.vue
文件就是一个组件,后续开发vue,所有的功能都是基于组件实现。lang="less"
开启less的功能,需要安装依赖包yarn add less-loader@7.2.1 less -D
<template>
<div id="app">
<h1>App.vue 最根组件,里面有HTML JS代码 CSS样式h1>
div>
template>
<style lang="less">
/* 常规:写CSS样式! */
#app {
background-color: pink;
h1 {
color:green;
}
}
style>
<script>
let a =10
</script>
module.exports = defineConfig({
transpileDependencies: true,
devServer: {
port: 81,//发开服务端口号
},
lintOnSave:false,//在此处添加
})
vue中通过template可以提供模板,但是这样的数据是写死的。
data必须是一个函数,并且返回一个对象
<script>
export default {
data () {
return {
money: 100,
msg: 'hello'
}
}
}
</script>
{{ }}
{{ msg }}
{{ obj.name }}
{{ msg.toUpperCase() }}
{{ obj.age > 18 ? '成年' : '未成年' }}
<h1>{{ gaga }}</h1>
<h1>{{ if (obj.age > 18 ) { } }}</h1>
<h1 id="box" class="box" title="{{ msg }}"></h1>
<template>
<div id="app">
<h1>App.vue 最根组件,里面有HTML JS代码 CSS样式h1>
<img alt="Vue logo" src="./assets/logo.png">
<p> {{info}} p>
<p>{{list[1]}}p>
<p>姓名:{{obj.name}} 年龄:{{obj.age}}p>
<p>是否成年:{{obj.age>=18?'成年':"未成年"}}p>
div>
template>
<script>
// 组件内部:script标签默认要求这样写
export default {
// data固定:内部return
data(){
return {
// vue语法插值表达式 {{}} 直接把数据渲染到页面内!
// 1、初始化数据,写在return{内部}
// 2、放入到展示某个标签内:思想不再操作dom,
// 注意:模板字符串语法非常像 ES6 `${变量} ${变量}`
// 内部可以写简单表达式(三元),不能写语句 if for
// {{}} 不能写在标签行内!
info:"我是字符串,展示数据!",
list:["张三","李四","王五"],
obj:{
name:"炸花生",
age:19
}
}
}
}
script>
<style lang="less">
/* 常规:写CSS样式! */
#app {
background-color: pink;
h1 {
color:green;
}
}
style>