精华内容
下载资源
问答
  • vue开发狗眼电影web

    2017-09-13 11:59:47
    vue开发狗眼电影web .
  • Python+Vue开发Web入门实例

    千次阅读 2019-10-18 11:03:17
    其实是个夭折了的练手项目,用Python写的后端,提供json格式数据给前端Vue进行渲染 代码写的比较乱,不过还是不忍扔掉,归档记录一下吧,以后再用到了也可以做个参考 数据库 文件列表 db.py 数据库操作 import...

    其实是个夭折了的练手项目,用Python写的后端,提供json格式数据给前端Vue进行渲染

    代码写的比较乱,不过还是不忍扔掉,归档记录一下吧,以后再用到了也可以做个参考

    数据库

     文件列表

    db.py 数据库操作

    import pymysql
    import json
    
    class Db:
        def connect(self):
            # 设置连接属性cursorclass返回查询结果为dict类型序列
            conn = pymysql.connect('localhost', 'root', '', 'wenming', charset='utf8', cursorclass=pymysql.cursors.DictCursor)
            cursor = conn.cursor()
            return conn, cursor
    
        def query(self, sql):
            conn,cursor = self.connect()
            cursor.execute(sql)
            result = cursor.fetchall()
            conn.close()
            return json.dumps(result, ensure_ascii=False)
    
        # 校验单个提交的问题答案是否正确
        # answer格式{'id' : 1, 'op': 'A'}
        def checkAnswer(self, answer:dict):
            conn,cursor = self.connect()
            sql = 'select answer from danxuan where id = %d' 
            # 查询返回结果格式:{'answer': 'D'}
            cursor.execute(sql % answer['id'])
            correctAnswer = cursor.fetchone()['answer']
            conn.close()
            if answer['op'] == correctAnswer:
                return True
            else:
                return False
    
    

    web.py 使用Flask提供json数据

    from flask import Flask, Response, request
    from flask_cors import CORS
    from db import Db
    import json
    
    mydb = Db()
    
    app = Flask(__name__)
    CORS(app)
    
    @app.route('/')
    def index():
    	# return Response(mydb.query('select * from danxuan limit 3'), mimetype='application/json')
    	return mydb.query('select * from danxuan order by rand() limit 5')
     
    @app.route('/do', methods = ['POST'])
    def check():
    	data = request.json	# dict类型,调用需要使用['key']的方式
    	resultList = []
    	for d in data:
    		# print(str(d['id']) + ' ' + d['op'] + '结果:' + str(mydb.checkAnswer(d)))
    		resultList.append({'id': d['id'], 'correct': mydb.checkAnswer(d)})
    
    	result = json.dumps({'status': 'OK', 'result': resultList})	
    	return result
    
    
    if __name__ == '__main__':
    	app.run()
    

    index.html 首页

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>文明单位模拟测试题</title>
        <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css"
            integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <link rel="stylesheet" href="css.css">
        <style>
            [v-cloak] {
                display: none !important;
            }
        </style>
    </head>
    
    <body>
    
        <div class="container pt-2" id="main" v-cloak>
            <div class="row">
                <div class="col-md-12">
                    <h2 class="d-inline">文明单位测试题库</h2>
                    <div class="float-right">
                            <div class="btn btn-secondary mr-4" onclick="doRefresh()">刷新</div>
                            <div class="btn btn-success" onclick="doSubmit()">提交</div>
                    </div>
                    
                </div>
            </div>
            <div class="row mt-2">
                <div class="col-md-12">
                    <form id="ceyan">
                        <table class="table table-bordered table-striped">
                            <thead>
                                <tr>
                                    <th class="text-center" style="width:4em">编号</th>
                                    <th class="text-center" style="width:60%">题目</th>
                                    <th class="text-center">选项</th>
                                    <th class="d-none result text-center">结果</th>
                                    <th class="d-none answer text-center">答案</th>
                                </tr>
                            </thead>
                            <tr v-for="q in questions">
                                <td class="text-center align-middle">{{q.id}}</td>
                                <td class="align-middle">{{q.title}}</td>
                                <td class="align-middle">
                                    <div class="custom-control custom-radio"  v-for="op in q.options">
                                        <input type="radio" class="custom-control-input" :name=q.id :id=q.id+op.substr(0,1) :value=op.substr(0,1)>
                                        <label class="custom-control-label" :for=q.id+op.substr(0,1)>{{op}}</label>
                                    </div>
                                </td>        
                                <td class="d-none result"><span :id=q.id+'result'></span></td>
                                <td class="d-none answer">{{q.answer}}</td>
                        </table>
                    </form>
                </div>
            </div>
        </div>
    
    
    
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/popper.js/1.12.9/umd/popper.min.js"
            integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous"></script>
        <script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js"
            integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous"></script>
        <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
        <script type="text/javascript">
            var v = new Vue({
                    el: '#main',
                    data: {
                        questions: []
                    }
                })
            $(document).ready(function () {            
                initData()
            });
    
            function initData(){
                $.getJSON("http://localhost:5000/", function (result, status) {
                    var questions = new Array();
                    $.each(result, function (key, val) {
                        var options = val.options.split(' '); //拆分选项
                        questions.push({ id: val.id, title: val.title, options: options, answer: val.answer })
                    })
                    v._data.questions = questions;
                });
            }
    
            function doRefresh(){
                $('input').removeAttr('checked');
                initData()
            }
            
            function doSubmit(){
                count = v._data.questions.length;
                var answers = new Array();
                $.each(v._data.questions, function(key,val){
                    op = $('input[name="'+ val.id +'"]:checked').val();
                    answers.push({id:val.id, op:op})
                })
                // for(i=1;i<count+1;i++){
                //     op = $('input[name="'+ i +'"]:checked').val();
                //     answers.push({id:i, op:op})
                // }
                var jdata = JSON.stringify(answers);
                
                $.ajax({
                    type:'POST',
                    url:'http://localhost:5000/do',
                    dataType:'json',
                    contentType: 'application/json; charset=utf-8',
                    data:jdata,
                    success:function(data){
                        // data内容:
                        // {"status": "OK", "result": [{"id": 1, "correct": true}, {"id": 2, "correct": false}, {"id": 3, "correct": true}]}
                        $.each(data.result, function(key,val){
                            //console.log(val.id + ' : ' + val.correct);
                            if(val.correct==true){
                                $('#' + val.id + 'result').text('√');
                                $('#' + val.id + 'result').addClass('right');
                            }else{
                                $('#' + val.id + 'result').text('×');
                                $('#' + val.id + 'result').addClass('wrong');
                            }
                            
                        })
    
                        // 显示结果和答案
                        $('.result').removeClass('d-none');
                        $('.answer').removeClass('d-none');
                    }
                    });
            }
        </script>
    </body>
    
    </html>

    css.css 自定义样式

    .wrong{
        font-size:2em;
        font-weight:bold;
        color:red
    }
    .right{
        font-size:2em;
        font-weight:bold;
        color:green
    }

     

    展开全文
  • vue开发的erp项目,非常完整数据表是远程连接的。
  • 使用flask和vue开发python版本的 web项目,一整个文件,使用pycharm创建的项目,包含vevn 文件和 __pycache__ 文件,所以内容比较大,可以直接使用。 或者:https://github.com/18055975947/python-flask-vue-web ...
  • Vue + Web + Native是基于和的样板,允许同时开发Web和本机应用程序。 内容 开始之前 Vue + Web + Native使用编译所有文件。 这些是主要功能。 最新版本的vue-loader 最新版本的nativescript CSS / SCSS / SASS ...
  • Vue开发Web阅读器(一)

    千次阅读 2019-05-11 14:25:05
    本项目使用vue3 初始化项目后需配置vue.config.js,官方文档:https://cli.vuejs.org/zh/config/#vue-config-js 我的暂时配置: const path = require('path') function resolve (dir) { return path.join(__...

    本项目使用vue3

    初始化项目后需配置vue.config.js,官方文档:https://cli.vuejs.org/zh/config/#vue-config-js

    我的暂时配置:

    const path = require('path')
    
    function resolve (dir) {
      return path.join(__dirname, dir)
    }
    
    module.exports = {
      chainWebpack: (config) => {
        config.resolve.alias
          .set('src', resolve('src'))
          .set('styles', resolve('src/assets/styles'))
          .set('components', resolve('src/components'))
      },
      devServer: {
        host: '0.0.0.0',
        port: 8080
      },
      publicPath: './'
    }

    安装sass依赖和阅读器引擎

    npm i node-sass sass-loader --save-dev
    
    npm i epubjs --save

    将项目所需的字体图标放入assets下的styles文件夹,将icon.css导入main.js中

    import 'styles/icon.css'

    index.html中配置手机访问时不能缩放

    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

    rem配置

    在App.vue中配置,当DOM内容加载时设置字体大小为屏幕宽度的1/10,当字体大小大于50px时,还是50px

    <script>
    import HelloWorld from './components/HelloWorld.vue'
    
    export default {
      name: 'app',
      components: {
        HelloWorld
      }
    }
    
    document.addEventListener('DOMContentLoaded', () => {
      let html = document.querySelector('html')
      let fontSize = window.innerWidth / 10
      fontSize = fontSize > 50 ? 50 : fontSize
      html.style.fontSize = fontSize + 'px'
    })
    </script>

    reset.scss和全局样式global.scss配置

    访问https://meyerweb.com/eric/tools/css/reset/复制到styles/reset.scss中

    还要加入html和body的默认设置

    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed,
    figure, figcaption, footer, header, hgroup,
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
      margin: 0;
      padding: 0;
      border: 0;
      font-size: 100%;
      font: inherit;
      vertical-align: baseline;
    }
    
    /* HTML5 display-role reset for older browsers */
    article, aside, details, figcaption, figure,
    footer, header, hgroup, menu, nav, section {
      display: block;
    }
    
    body {
      line-height: 1;
    }
    
    ol, ul {
      list-style: none;
    }
    
    blockquote, q {
      quotes: none;
    }
    
    blockquote:before, blockquote:after,
    q:before, q:after {
      content: '';
      content: none;
    }
    
    table {
      border-collapse: collapse;
      border-spacing: 0;
    }
    
    html, body {
      width: 100%;
      height: 100%;
      font-family: 'PingFangSC-Light', 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', 'Arial', 'sans-serif';
    }

    配置global.scss

    @import "reset.scss";
    
    // 1rem = fontSize px
    // 1px = 1/fontSize rem
    
    $fontSize: 37.5;
    @function px2rem($px) {
      @return ($px / $fontSize) + rem
    }
    
    @mixin center() {
      display: flex;
      justify-content: center;
      align-items: center;
    }

    然后在main.js中引入global.scss

    通过epubjs将epub电子书解析成Book对象,再通过Book对象生成Rendition对象

     

    在src目录下新建Ebook.vue,router.js中配置路由和重定向,当访问主页面时重定向到/ebook页面

    import Vue from 'vue'
    import Router from 'vue-router'
    
    import Ebook from '@/Ebook'
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          redirect: '/ebook'
        },
        {
          path: '/ebook',
          component: Ebook
        }
      ]
    })

    Ebook.vue中写入

    <template>
      <div>aaa</div>
    </template>
    
    <script>
    import Epub from 'epubjs'
    
    const DOWNLOAD_URL = '/static/2018_Book_AgileProcessesInSoftwareEngine.epub'
    export default {
      methods: {
        // 电子书解析和渲染
        showEpub () {
          // 生成Ebook
          // 生成Rendition,通过Book.renderTo方法生成
          // 通过Rendition.display渲染电子书
        }
      },
      mounted () {
        this.showEpub()
      }
    }
    </script>
    <template>
      <div class="ebook">
        <div class="read-wrapper">
          <div id="read"></div>
        </div>
      </div>
    </template>
    
    <script>
    import Epub from 'epubjs'
    
    const DOWNLOAD_URL = '/2018_Book_AgileProcessesInSoftwareEngine.epub'
    global.ePub = Epub
    export default {
      methods: {
        // 电子书解析和渲染
        showEpub () {
          // 生成Ebook
          this.book = new Epub(DOWNLOAD_URL)
          // 生成Rendition,通过Book.renderTo方法生成
          this.rendition = this.book.renderTo('read', {
            width: window.innerWidth,
            height: window.innerHeight
          })
          // 通过Rendition.display渲染电子书
          this.rendition.display()
        }
      },
      mounted () {
        this.showEpub()
      }
    }
    </script>

    设置遮罩,点击左边或右边遮罩来控制翻页

    <template>
      <div class="ebook">
        <div class="read-wrapper">
          <div id="read" class="read"></div>
          <div class="mask">
            <div class="left" @click="prevPage"></div>
            <div class="center"></div>
            <div class="right" @click="nextPage"></div>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    import Epub from 'epubjs'
    
    const DOWNLOAD_URL = '/2018_Book_AgileProcessesInSoftwareEngine.epub'
    global.ePub = Epub
    export default {
      methods: {
        // 电子书解析和渲染
        showEpub () {
          // 生成Ebook
          this.book = new Epub(DOWNLOAD_URL)
          // 生成Rendition,通过Book.renderTo方法生成
          this.rendition = this.book.renderTo('read', {
            width: window.innerWidth,
            height: window.innerHeight
          })
          // 通过Rendition.display渲染电子书
          this.rendition.display()
        },
        prevPage () {
          if (this.rendition) {
            this.rendition.prev()
          }
        },
        nextPage () {
          if (this.rendition) {
            this.rendition.next()
          }
        }
      },
      mounted () {
        this.showEpub()
      }
    }
    </script>
    
    <style lang="scss" scoped>
      @import "~styles/global";
    
      .ebook {
        position: relative;
        .read-wrapper {
          .read {
            /*width: 500px;*/
            /*margin: 0 auto;*/
          }
          .mask {
            display: flex;
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            z-index: 100;
            .left {
              width: 100px;
            }
            .right {
              width: 100px;
            }
            .center {
              flex: 1;
            }
          }
        }
      }
    </style>

    添加菜单,添加点击中心处显示和隐藏菜单事件

    <template>
      <div class="ebook">
        <transition name="slide-down">
          <div v-show="isMenuShow" class="title-wrapper">
            <div class="left">
              <span class="icon-back icon"></span>
            </div>
            <div class="right">
              <div class="icon-wrapper">
                <span class="icon-cart icon"></span>
              </div>
              <div class="icon-wrapper">
                <span class="icon-person icon"></span>
              </div>
              <div class="icon-wrapper">
                <span class="icon-more icon"></span>
              </div>
            </div>
          </div>
        </transition>
        <div class="read-wrapper">
          <div id="read" class="read"></div>
          <div class="mask">
            <div class="left" @click="prevPage"></div>
            <div class="center" @click="toggle"></div>
            <div class="right" @click="nextPage"></div>
          </div>
        </div>
        <transition name="slide-up">
          <div v-show="isMenuShow" class="menu-wrapper">
            <div class="icon-wrapper">
              <span class="icon-menu icon"></span>
            </div>
            <div class="icon-wrapper">
              <span class="icon-progress icon"></span>
            </div>
            <div class="icon-wrapper">
              <span class="icon-bright icon"></span>
            </div>
            <div class="icon-wrapper">
              <span class="icon-a icon">A</span>
            </div>
          </div>
        </transition>
      </div>
    </template>
    
    <script>
    import Epub from 'epubjs'
    
    const DOWNLOAD_URL = '/2018_Book_AgileProcessesInSoftwareEngine.epub'
    global.ePub = Epub
    export default {
      data () {
        return {
          isMenuShow: false
        }
      },
      methods: {
        // 电子书解析和渲染
        showEpub () {
          // 生成Ebook
          this.book = new Epub(DOWNLOAD_URL)
          // 生成Rendition,通过Book.renderTo方法生成
          this.rendition = this.book.renderTo('read', {
            width: window.innerWidth,
            height: window.innerHeight
          })
          // 通过Rendition.display渲染电子书
          this.rendition.display()
        },
        prevPage () {
          if (this.rendition) {
            this.rendition.prev()
          }
        },
        nextPage () {
          if (this.rendition) {
            this.rendition.next()
          }
        },
        toggle () {
          this.isMenuShow = !this.isMenuShow
        }
      },
      mounted () {
        this.showEpub()
      }
    }
    </script>
    
    <style lang="scss" scoped>
      @import "~styles/global";
    
      .ebook {
        position: relative;
        overflow-y: hidden;
        .title-wrapper {
          display: flex;
          justify-content: space-between;
          align-items: center;
          position: absolute;
          top: 0;
          left: 0;
          width: 100%;
          height: px2rem(48);
          z-index: 101;
          background-color: #fff;
          box-shadow: 0 px2rem(8) px2rem(8) rgba(0, 0, 0, 0.15);
          &.slide-down-enter, &.slide-down-leave-to {
            transform: translate3d(0, -100%, 0);
          }
          &.slide-down-enter-to, &.slide-down-leave {
            transform: translate3d(0, 0, 0);
          }
          &.slide-down-enter-active, &.slide-down-leave-active {
            transition: all .3s linear;
          }
          .left {
            flex: 0 0 px2rem(60);
            @include center;
          }
          .right {
            flex: 1;
            display: flex;
            justify-content: flex-end;
            .icon-wrapper {
              flex: 0 0 px2rem(40);
              @include center;
            }
          }
        }
        .read-wrapper {
          .read {
    
          }
          .mask {
            display: flex;
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            z-index: 100;
            .left {
              width: px2rem(100)
            }
            .right {
              width: px2rem(100)
            }
            .center {
              flex: 1;
            }
          }
        }
        .menu-wrapper {
          display: flex;
          position: absolute;
          z-index: 101;
          left: 0;
          bottom: 0;
          width: 100%;
          height: px2rem(48);
          box-shadow: 0 px2rem(-8) px2rem(8) rgba(0, 0, 0, 0.15);
          background-color: #fff;
          .icon-wrapper {
            flex: 1;
            @include center
          }
        }
      }
    </style>
    

    动画效果解析

          &.slide-down-enter, &.slide-down-leave-to {
            transform: translate3d(0, -100%, 0);
          }
          &.slide-down-enter-to, &.slide-down-leave {
            transform: translate3d(0, 0, 0);
          }
          &.slide-down-enter-active, &.slide-down-leave-active {
            transition: all .3s linear;
          }

    transition包裹在需要展示动画的标签外部,但动画的样式和包裹的标签属于同一级,所以要使用&表示和标签同一级

    slide-down-enter表示开始显示时

    slide-down-leave-to表示完全隐藏时

    slide-down-enter-to表示完全显示时

    slide-down-leave表示开始隐藏时

    slide-down-enter-active表示显示的全过程

    slide-down-leave-active表示隐藏的全过程

    2个动画的方式差不多可以简写,而且以后可能还会用到,所以写入global.scss中

    .slide-down-enter, .slide-down-leave-to {
      transform: translate3d(0, -100%, 0);
    }
    
    .slide-up-enter, .slide-up-leave-to {
      transform: translate3d(0, 100%, 0);
    }
    
    .slide-down-enter-to, .slide-down-leave,.slide-up-enter-to,.slide-up-leave{
      transform: translate3d(0, 0, 0);
    }
    
    .slide-down-enter-active, .slide-down-leave-active, .slide-up-enter-active, .slide-up-leave-active {
      transition: all .3s linear;
    }

     

    展开全文
  • vue.js

    使用vue开发web app - 1 - 初步使用vue创建组件

    课程参考视频:https://egghead.io/lessons/javascript-create-a-basic-component-using-vue-js

    目录

    目的:

    · 初步使用vue创建组件
    1. 通过el元素,进行数据绑定
    2. 通过”{{ }}”访问data中的数据字段
    3. 学会使用v-html

    步骤:

    · 引入vuejs文件
    1. 创建div,展示文本
    2. 进行数据绑定
    3. 通过控制台动态修改html文本内容

    基本要求

    1. 了解json数据格式;
    2. 了解基本html使用;

    源码:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <!-- 引入cdn的vue.js文件 -->
        <script src="https://unpkg.com/vue/dist/vue.js"></script> 
    </head>
    <body>
        <!-- 创建card的div -->
        <div id="card">
            <!-- 展示vue数据data中的title字段 -->
            <header>{{ title }}</header>
            <!-- 展示vue数据data中的content字段 -->
            <div v-html="content">{{ content }}</div>
        </div>
    
        <script type="text/javascript">
            var card = new Vue({
                // 进行控件绑定(el->element),绑定html页面中id为card的控件,相当于document.getElementById("card")
                el:"#card",
                data: {
                    //通过{{title}}访问
                    title : "哆啦A梦",
                    //通过{{content}}访问   
                    content : "<strong>哆啦A梦</strong>有<em>百宝袋</em>,有<em>竹蜻蜓</em>"
                }
    
            })
        </script>
    </body>
    </html>
    展开全文
  • vue

    使用vue开发web app - 2 - 创建一个列表控件

    课程参考视频:https://egghead.io/lessons/javascript-create-a-list-component-in-vue-js

    目录

    目的:

    1. 学会使用v-for进行循环
    2. 学会使用v-on进行事件绑定
    3. 学会编写事件响应函数

    步骤:

    1. 创建列表,并绑定数据
       <!-- 使用for循环,根据items的个数自动生成li -->
                <li v-for="item in items">
                <!-- 展示item中text字段 -->
                    {{ item.text }}
                </li>
    1. 添加增加按钮,绑定事件,编写添加元素事件内容(addItem)
    addItem: function() {
                    var input = document.getElementById("itemForm");
    
                    if (input.value != "") {
                        this.items.push({
                            text: input.value
                        })
                        input.value = "";
                    }
    
                }
    1. 添加删除按钮,绑定事件,编写删除元素事件内容(deleteItem)
             deleteItem: function(index) {
                    this.items.splice(index, 1)
                }

    基本要求

    1. 了解json数据格式;
    2. 了解基本html使用;
    3. js的基础知识

    源码:

    <!DOCTYPE html>
    <html>
    
    <head>
        <title></title>
        <!-- 引入cdn的vue.js文件 -->
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    
    <body>
        <!-- 创建card的div -->
        <div id="card">
            <!-- 展示vue数据data中的title字段 -->
            <header>{{ title }}</header>
    
            <div>
                <!-- keypress.enter进行事件绑定,绑定keypress.enter事件(即按下键盘回车事件),调用vue中的addItem函数 -->
                <input id="itemForm" v-on:keypress.enter="addItem" />
                <!-- v-on:click进行事件绑定,绑定click事件,调用vue中的addItem函数 -->
                <button v-on:click="addItem">添加人物</button>
            </div>
            <ul>
            <!-- 使用for循环,根据items的个数自动生成li -->
                <li v-for="(item,index) in items">
                        <!-- v-on:click进行事件绑定,绑定click事件,调用vue中的delteItem函数,并传入参数index -->
                    <button v-on:click="deleteItem(index)">x</button>
                    {{ item.text }}
                </li>
            </ul>
        </div>
        <script type="text/javascript">
        var app = new Vue({
            el: "#card",
            data: {
                title: "哆啦A梦人物列表",
                items: [{
                    text: "野比大雄"
                }, {
                    text: "静香"
                }, {
                    text: "胖虎"
                }, ]
    
            },
            methods: {
                addItem: function() {
                    var input = document.getElementById("itemForm");
    
                    if (input.value != "") {
                        this.items.push({
                            text: input.value
                        })
                        input.value = "";
                    }
    
                },
                deleteItem: function(index) {
                    this.items.splice(index, 1)
                }
            }
        })
        </script>
    </body>
    
    </html>
    
    

    [1]https://egghead.io/

    展开全文
  • Vue Web存储一个用于Web存储的简约Vue.js插件功能选择localStorage或sessionStorage或两者都作为您存储的所有k的前缀。存储的键自动JSON.stringify和JSON.parse用于交叉表通信的事件安装#yarn yarn添加vue-web-...
  • Vue视频课程,学习Vueweb开发需备

    千人学习 2017-10-29 22:49:08
    本课程包括Vue的基础知识,vue模板,vue指令,vue事件处理,列表渲染、过度和动画、自定义指令等技术。 本课程是《JavaScript:王的语言》系列课程的重要组成部分。这一系列课程的主要目的是让学员学会如何只是用...
  • 全栈开发vue全家桶 node 开发移动web
  • Vue.js实践:使用Vue2.0开发富交互WEB应用Vue.js实践:使用Vue2.0开发富交互WEB应用Vue.js实践:使用Vue2.0开发富交互WEB应用Vue.js实践:使用Vue2.0开发富交互WEB应用
  • Vue Web组件演示 丹尼斯·汉堡,Poort80阿姆斯特丹,2018年9月 这是一个使用VueJS的vue-cli v3.x从Vue组件构建W3C Web组件的小演示。 然后,可以将具有定制HTML...运行本地VueJS开发Web服务器 在此演示中,我们将重点放
  • 基于VueWebDesktop 系统 The WebDesktop system based on Vue
  • vue开发实例

    2019-02-21 17:13:19
    vue开发实例,主要包括后端请求接口的封装,和vue基本用法
  • 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
  • 前后端分离:WebAPI+Vue开发——远程数据请求axios 前后端分离:WebAPI+Vue开发——跨域设置 前后端分离:WebAPI+Vue开发——身份认证 存储用户身份可以用Cache内存或者Redis,本文实现用的是Redis。 1、在登录...
  • 前后端分离:WebAPI+Vue开发——远程数据请求axios 前后端分离:WebAPI+Vue开发——跨域设置 前后端分离:WebAPI+Vue开发——身份认证 本文采取的策略是“跨域资源共享-Cross Origin Resource Sharing(CORS) ”。...
  • vue实战项目,前端框架使用vue+bootstrap,后端框架使用的是spring+springmvc+mybatis,数据库使用mysql,包含全套代码
  • 前后端分离:WebAPI+Vue开发——远程数据请求axios 前后端分离:WebAPI+Vue开发——跨域设置 前后端分离:WebAPI+Vue开发——身份认证 本文没有Vue语法内容(Vue中文文档),只记录本人开发中遇到的难点 远程...
  • 这是由Rollup.js捆绑提供的使用WorkerDOM在Web Worker中工作的Vue.js的“ hello...基准比较这些渲染性能测试:DBMON Vue.js 2 Web Worker中的DBMON Vue.js 2开发使用main.js作为开发工具,一如既往地开发Vue.js应用程序
  • Vue仿照掘金客户端App开发Web版掘金App 运行 git clone https://github.com/sanfengliao/vue-juejin.git cd vue-juejin npm install # serve with hot reload at localhost:8080 npm run serve # build juejin ...
  • Vue开发指南

    2018-10-11 20:15:24
    Vue.js 是一个用来开发Web 界面的前端库。《Vue.js指南》致力于普及国内Vue.js 技术体系,让更多喜欢前端的人员了解和学习Vue.js。如果你对Vue.js 基础知识感兴趣,如果你对源码解析感兴趣,如果你对Vue.js 2.0感...
  • 海康威视官方提供的web开发包 使用vue + elementUI实现,里面引用的海康的webVideoCtrl.js文件
  • 普通web项目中可嵌入vue使用,仅需将vue的js引入页面即可,例子如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <...
  • 本文的讨论以官方提供的demo为例 ...这种打包方式对应以web为输出的开发环境(默需手工修改配置及部分文件) 1.npm run build 在命令终端运行此命令后,在build文件夹会生成应用可执行文件;在dist...
  • 海康威视web控件开发+vue结合做网页开发

    千次阅读 多人点赞 2020-12-16 14:34:53
    准备:web开发包(包含插件以及demo,在海康官网即可下载32位64位的都有.那些需要积分下载的博主良心不疼么.) 点击这里下载:链接: https://pan.baidu.com/s/12FrbycWyWWyiRJH5Yd1tPA 提取码: gam5 开始开发: 1....
  • vue_web-源码

    2021-02-10 10:29:38
    Vueapp 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,390
精华内容 29,756
关键字:

vue开发web网站

vue 订阅