前端

前端四要素

  • 逻辑 :判断,循环
  • 事件 :浏览器事件(window,document);DOM事件(增删改,遍历)
  • 视图 :html,css,js
  • 通信 : XmlHttpRequest,Ajax,Axios,websocket

javascript 框架

jQuery -----Ajax可以实现通信
Angular ------模块化mvc
React ----------虚拟Dom
Vue----------只专注视图
Axios------------前端通信框架

UI框架

  • 基于React

    Ant-Design(阿里)

  • 基于Vue

iview ( iview-admin) 饿了么出品 ,基于npm+webpack+babel 开发 , 支持移动端多些
ElementUI ==(Vue-element-admin) == 阿里; 支持PC端多些
ice

  • 其他

Bootstrap 开源工具包
AmazeUI HTML5跨屏前端框架

javascript 构建工具

Babel: js编译:Typescript
webpack: 打包器

前端模板网站

layui

Jquery API

Jquery API

源码之家

前端开发软件

vscode, hubilder, sublime, webstrom, idea , idea+vue插件

vue

在这里插入图片描述

mvvm架构思想

在这里插入图片描述

vue开发

vue.js官网

{{}}
v-bind:
v-if=
v-else-if=
v-else=
v-for=

v-on: 监听事件
v-model=""   双向绑定

vue七大属性
el:
data:
methods:
template:
render:
computed:
watch:

第一个程序
安装 vue.js插件 node.js插件

<head>
    <meta charset="UTF-8">
    <title>第一个vue程序</title>
</head>
<body>
<div id="app">
    {{message}} //展示数据  用 {{}} 或 v-bind:
  <span v-bind:title="message">asdfhfahd;fkhdjk;fds;f </span>  
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app', //绑定元素
        data: {
            message: 'hello,first vue'
        }});
</script>
</body>

判断,循环

<head>
    <meta charset="UTF-8">
    <title>判断,循环</title>
</head>
<body>
<div id="app">
    <h1 v-if="message===1">1</h1>
    <h1 v-else-if="message===2">2</h1>
    <h1 v-else>0</h1>
</div>
<div id="app1">
    <h1 v-for="item in items">
        {{item.text}}
    </h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            message: 2
        }});
    var vm1=new Vue({
        el: '#app1',
        data: {
            items:[
                {text: 'java基础'}, {text: 'SQL高级'}, {text: 'suanfa'}
            ]}});
</script>
</body>

事件

<head>
    <meta charset="UTF-8">
    <title>事件</title>
</head>
<body>
<div id="app">
    <button v-on:click="sayhi">click me</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            message: 'hello,vue'
        },
        methods: {
            sayhi: function (event) {//方法,监听event
                alert(this.message)
            }
        }
    });
</script>
</body>

自定义组件

<head>
    <meta charset="UTF-8">
    <title>组件</title>
</head>
<body>
<div id="app">
   <!--使用组件-->
<selfcom v-for="item in items" v-bind:selfval="item"></selfcom>

</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    //自定义组件
    Vue.component('selfcom',{
        props: ['selfval'], //接收参数
        template: '<li>{{selfval}}</li>'
    });
    var vm = new Vue({
        el: '#app',
        data: {
            items:["java","mysql","linux"]
        }
    });
</script>
</body>

axios 异步通信
axios API文档

安装 axios

使用 npm:

$ npm install axios

使用 bower:

$ bower install axios

使用 cdn:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<head>
    <meta charset="UTF-8">
    <title>异步通信</title>
</head>
<body>
<div id="app">
    <h1>{{info.name}}</h1>
    <h1>{{info.sex}}</h1>
    <h1>{{info.hobbys.first}}</h1>
</div>
<!--引入js-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    var vm=new Vue({
        el: '#app',
        data(){
            return{//return一个格式
                info:{
                    name: null,
                    sex: null,
                    hobbys:{
                        first: null,
                        second: null
                    }}
            }},
        mounted(){//钩子函数
            axios.get('../data.json').then(response=>(this.info=response.data));
        }
    });
</script>
</body>

data.json

{
  "name": "luxiangmin",
  "sex": "woman",
  "hobbys": {
    "first": "playball",
    "second": "run"
  },
  "friends": [
    {
      "name": "zhanshang", "sex": "boys"},
    {"name": "wangwu", "sex": "girl"}
  ]
}

计算属性:可以将不经常变化的数据,缓存,能快速取,减少开销
在这里插入图片描述

插槽slot

<body>
<div id="app">
    <todo>
        <todo-tile slot="todo-tile" :tile="tile"></todo-tile>
        <todo-items slot="todo-items" v-for="item in items" v-bind:item="item"></todo-items>

    </todo>

</div>
<!--引入js-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    Vue.component('todo',{
        template: '<div> ' +
            '<slot name="todo-tile"></slot>' +'<ul>' +'<slot name="todo-items"></slot>'+
            '</ul>'+ '</div>'
    });
    Vue.component('todo-tile',{
        props: ['tile'],
        template: '<div>{{tile}}</div>'
    });
    Vue.component('todo-items',{
        props: ['item'],
        template: '<li>{{item}}</li>'
    });

    var vm=new Vue({
        el: '#app',
        data: {
            tile: '书籍列表',
            items: ['数据结构','算法','java语言']
        }
    });

</script>

</body>

自定义事件分发

<body>
<div id="app">
    <todo>
        <todo-tile slot="todo-tile" :tile="tile"></todo-tile>
        <todo-items slot="todo-items" v-for="(item ,index) in items"
                    v-bind:item="item" :index="index" v-on:remove="removeitem(index)" :key="index"></todo-items>
    </todo>
</div>
<!--引入js-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    Vue.component('todo',{
        template: '<div> ' +
            '<slot name="todo-tile"></slot>' +'<ul>' +'<slot name="todo-items"></slot>'+
            '</ul>'+ '</div>'
    });
    Vue.component('todo-tile',{
        props: ['tile'],
        template: '<div>{{tile}}</div>'
    });
    Vue.component('todo-items',{
        props: ['item','index'],
        template: '<li>{{index}} {{item}}<button @click="remove">删除</button></li>',
        methods: {
            remove: function (index) {
                this.$emit('remove',index);
            }
        }
    });
    var vm=new Vue({
        el: '#app',
        data: {
            tile: '书籍列表',
            items: ['数据结构','算法','java语言']
        },
        methods: {
            removeitem: function (index) {
                console.log("删除"+this.items[index]+"ok");
                this.items.splice(index,1);
            }
        }
    });

</script>
</body>

vue-cli开发 脚手架框架

vue-cli 快速生成vue的项目模板:
统一的目录结构

环境

1.node.js 下载 https://nodejs.org/en/download/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一个vue-cli 项目

在这里插入图片描述
在这里插入图片描述
在idea中打开项目

webpack

打包降级的功能,将ES6降为ES5

安装:        npm  install webpack -g
              npm install webpack-cli -g
查看安装版本:  webpack -v
               webpack-cli  -v

使用示例:
新建一个空文件,idea打开
在这里插入图片描述

1. hello.js
//暴露一个方法
exports.sayhi = function () {
    document.write("<h1>暴露 sayji</h1>");
};
exports.saybeey = function () {
    document.write("<h1>暴露 saybeey</h1>");
};
2. main.js
//变量hello接收请求到的对象,并可以调用方法
var hello=require("./hello");
hello.sayhi();
hello.saybeey();

3. webpack.config.js
module.exports = {
    entry: './modules/main.js', //打包入口
    output: {
        filename: './js/bundle.js' //打包输出
    }
};
4. 执行打包命令   webpack
5. dist/js/bundle.js  是打包后的结果
6.  在 index.html  中引用  bundle.js  就可以了

vue-router 重定向,传参

npm install vue-router --save-dev

//    ./router/index.js   路由配置文件 
import Vue from 'vue'
import VueRouter from "vue-router"
//导入要路由的组件
import main from "../components/main";
import mycontent from "../components/mycontent";

//安装路由
Vue.use(VueRouter);

//配置路由导出
export default new VueRouter({
  routes: [
    {
      //请求的路由路径
      path: '/content',
      //路由名称
      name: 'content',
      // 返回要跳转的组件
      component: mycontent
    },{

      //请求的路由路径,接收id参数
      path: '/main/:id',
      //路由名称
      name: 'main',
      // 返回要跳转的组件
      component: main
       },{
        path: '/tomain',
        redirect: '/main'//重定向
    }
  ]
});
//  main.js   项目入口
import Vue from 'vue'
import App from './App'
//导入路由配置目录
import router from './router'

Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
//   APP.vue  入口组件 
<template>
  <div id="app">
   <h1>vue router</h1>
     <!--:to="{name: 'main', params: {id:1}}   参数传递-->
    <router-link :to="{name: 'main', params: {id:1}}">首页</router-link>
    <router-link to="/mycontent">详情</router-link>
    <!--展示页面-->
    <router-view > </router-view>
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>
//main.vue
<template>
   <div>
     <h1>主页</h1>
     <!--显示参数-->
     {{$route.params.id}}
   </div>
</template>

<script>
    export default {
        name: "main"
    }
</script>

<style scoped>

</style>

element-ui

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值