主頁 > 前端設計 > npm(nodejs package manager)、webpack、Vue組件、Vue腳手架開發工具、Vue Router的使用、Vuex的使用、使用Django前后端互動

npm(nodejs package manager)、webpack、Vue組件、Vue腳手架開發工具、Vue Router的使用、Vuex的使用、使用Django前后端互動

2020-10-15 16:48:32 前端設計

13.8 npm(nodejs package manager)

使用命令列安裝包:
1. cd切換到專案目錄下,執行初始化操作 npm init/npm init -y
2. 安裝其他依賴包
npm install jquery
npm install jquery@1.11.13
npm install jquery -g       全域安裝
npm install bootstrap@3 -D  開發環境下
marked包安裝和使用    npm install marked -D   
npm install vuex -D
3. 卸載包     npm uninstall 包名
4. 更新npm    npm install npm@latest 
5. npm安裝包慢的解決辦法:
    1.安裝cnpm包 :https://npm.taobao.org/
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    2. 配置npm源為阿里源
    npm config set registry https://registry.npm.taobao.org/

在當前專案下生成檔案:node_moduels(包含用npm匯入的jQuery包等)、package.json、pack-lock.json(包含匯入包的資訊)

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>Document</title>
</head>
<body>
    <script src="./node_modules/jquery/dist/jquery.min.js"></script>
    <script>
        $.each([11,22,33], function(k,v){
            console.log(k,v)
        })
    </script>
</body>
</html>

13.9 webpack

為什么要有webpack?
1. JS中不存在模塊化的概念
2. 安裝和使用
npm install webpack -g          --> 全域安裝
npm install webpack-cli -g
3. webpack進階:https://webpack.js.org/

在當前專案下生成檔案:dist(包含main.js,將專案下的依賴關系檔案打包保存在main.js檔案中)、node_moduels(包含用npm匯入的jQuery包等)、package.json、pack-lock.json(包含匯入包的資訊)

x.js:

var alex = 'sb';
var login = true;
module.exports = {alex}

y.js:

var obj = require('./x')
var jquery = require('jquery')
console.log(obj);   //sb
jquery.each([11,22,33,44], function(k,v){
    console.log(k,v)
})

main.html:

<body>
<script src="./dist/main.js"></script>
</body>

13.10Vue組件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div id="app">
        <button-counter></button-counter>
        <button-counter></button-counter>
        <button-counter></button-counter>
        <component-a></component-a>
        <ComponentB             //父組件向子組件通信
            v-for="a in aList"
            v-bind:url="a.url"
            v-bind:title="a.title"
        ></ComponentB>
       <p> 被選了{{num}}次!</p>     <!--子組件向父組件通信-->
        <ComponentC
            v-for="name in nameList"
            v-bind:name="name"
            v-on:do="foo"
        ></ComponentC>  
        <table>                 //組件的is屬性
        <!-- <ComponentB></ComponentB> 此時組件中template中的tr會顯示在table外-->  
        <tr is="ComponentB"></tr>  //此時組件中template中的tr會顯示在table中的tbody中
        </table>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>  <!--通過npm匯入vue.js-->
    <script>
        //全域注冊組件:定義一個名為button-counter的新組件
        Vue.component('button-counter', {
        /* data: {
            count: 0
            } */
        data: function (){      //data 必須是一個函式,不能直接是物件,組件復用時會影響到其他實體
            return {
                count: 0
            }
        },
        template: '<button v-on:click="count++">你點了我 {{ count }} 次,</button>'
        })
        //區域注冊組件:區域注冊的組件在其子組件中不可用,如果你希望ComponentB在ComponentA中可用,需宣告
        const ComponentA = {
             components: {
                ComponentB
            },
            template: `<a href='https://www.sogo.com'>點我</a>`,
            data: function(){
                return {  
                }
            }
        }
        //父組件向子組件通信
        const ComponentB  = {
            //template: `<a> <slot></slot></a>`,通過插槽slot分發內容
            //template: ` <tr><slot></slot></tr>`,組件的is屬性
            template: `<p><a v-bind:href='url'>{{title}}</a></p>`,
            props: {            //在子組件中使用props宣告將url、title傳入組件template并顯示
                url: String,     //對傳值進行校驗
                title: {
                    type: String,
                    required: true
                }
            },
            data: function(){
                return {
                
                }
            }
        }
         //子組件向父組件通信
        const ComponentC = {
            //子組件可以通過呼叫內建的 $emit 方法 并傳入事件名稱來觸發一個事件
            template: `<button v-on:click='$emit("do")'>{{ name }}</button>`,
            props: {        //使用props宣告將name傳入組件template并顯示
                name
            },
            methods: {
                do(){
?
                }
            }
        }
        var vm = new Vue({
            el: '#app',
            components:{        //區域注冊組件需要在components中宣告
                'component-a': ComponentA,
                ComponentB,
                ComponentC
            },
             data: {
                num:0,
                nameList: ["技師A", '技師B', '技師C'],
                aList: [
                    {
                        url: 'https://www.sogo.com',
                        title: 'sogo'
                    },
                    {
                        url: 'https://www.luffycity.com',
                        title: 'luffycity'
                    },
                    {
                        url: 'http://www.oldboyedu.com/',
                        title: 'oldboy edu'
                    },
                ]
            },
            methods: {
                foo(){
                    this.num += 1;
                }
            } 
        })
    </script>
</body>
</html>

13.11Vue腳手架開發工具

1. 安裝
npm install -g vue-cli
2. 使用
查看安裝的vue-cli版本:vue -V
查看幫助:vue --help
查看支持的模板:vue list
3.創建Vue專案
webpack簡單模板:vue init webpack-simple app01
webpack模板:(使用Bootstrap時候要用這個):vue init webpack vueapp01
    ? Project name vueapp01                     '回車確認'
    ? Project description A Vue.js project        '回車確認'
    ? Author Lmy <[email protected]>             '回車確認'
    ? Vue build (Use arrow keys)                
    ? Vue build (standalone)
        > Runtime + Compiler: recommended for most users    '回車確認'
        Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are              ONLY allowed in .vue files - render functions are required elsewhere
    ? Install vue-router? 'Yes'
    ? Use ESLint to lint your code? 'No'
    ? Set up unit tests No '(設定單元測驗)'
    ? Setup e2e tests with Nightwatch?  'No'   '(用夜視器設定e2e測驗?)'
    ? Should we run `npm install` for you after the project has been created? (recommended) (Use arrow keys)    '(npm)'
        > Yes, use NPM    '回車確認'
        Yes, use Yarn
        No, I will handle that myself
    ,,,,( vue-cli · Generated "vueapp01".),,,,(Installing project dependencies ...),,,, Project initialization finished!,,,,,,
'''To get started:
  cd vueapp01
  npm run dev'''
C:\untitled>cd vueapp01
C:\untitled\vueapp01>npm run dev '(啟動前端服務)'' Your application is running here: http://localhost:8080'
停止專案:Ctrl + C 
4.在當前專案下安裝bootstrap
C:\untitled\vueapp01>npm install [email protected] -D  或者  npm install [email protected] --save-d
'安裝開發環境下的bootstrap,并將依賴關系寫入package.json中'

13.12Vue Router的使用

兩個組件(Vue Router內置組件):

<router-link to="/foo">Go to Foo</router-link> #默認渲染成a標簽
<router-view></router-view>                  #路由視圖,組件顯示位置

制作組件路由:

components/Home.vue

<template>
    <div>
        <h1>這是home頁面</h1>   //vue檔案中,組件template一定要用div包裹所有標簽
    </div>
</template>
?
<script>
export default {
    name:'Home',
}
</script>
?
<style>
?
</style>
?

components/Note.vue

<template>
    <div>
        <h1>這是note頁面</h1>
    </div>
</template>
?
<script>
export default {
    name:'Note',
}
</script>
?
<style>
</style>

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Home from '@/components/Home.vue'  //從組件匯入,@代表src
import Note from '@/components/Note.vue' 
?
Vue.use(Router)
?
export default new Router({
  mode:'history',                       //去掉URL中的'#'
  routes: [                             //設定組件路由對應關系
    {
      path: '/home',
      name: '我的home頁面',     
      component: Home
    },
    {
      path: '/note',
      name: '我的note頁面',
      component: Note
    }
  ]
})

Apple.vue:

<li><router-link to="/home">link home版</router-link></li>
<li><router-link to="/note">link note版</router-link></li>
<router-view></router-view>

<router-link
          to="/home" 
          tag="li"               #指定生成li標簽
          active-class="active"   #指定標簽被點擊時的樣式
        >
          <a href="">link home版</a>
        </router-link>
 <router-link
          to="/note" 
          tag="li"               
          active-class="active"   
        >
          <a href="">link note版</a>
        </router-link>
<router-view></router-view>

<router-link
    v-for="(item,index) in allRouters"
    v-bind:to="item.path"
    tag="li"
    active-class="active"    
    v-bind:key=index
        >
    <a href="">{{ item.name }}</a>
</router-link>
<router-view></router-view>  
?
<script>
import 'bootstrap/dist/css/bootstrap.min.css'
export default {
  name: 'App',
  // 計算屬性
  computed:{
    allRouters(){   // 當前Vue實體注冊的所有路由
      return this.$router.options.routes
    }
  }
}
</script>

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/>'
})

13.13Vuex的使用

store.js:

import Vue from 'vue'
import Vuex from 'vuex'
?
Vue.use(Vuex)
// 開一家商店
export default new Vuex.Store({
    state: {
      count:0
    },
    mutations:{             //提交 mutation來更改 Vuex 的 store 中的狀態
      increment(state){
        state.count+=1
      }
    }
  })

main.js:

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
?
Vue.config.productionTip = false
?
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,   //注冊路由物件
  store,    //向vue實體注冊我的商店
  components: { App },
  template: '<App/>'
})

NoteItem.vue:

<template>
  <div
  class="list-group-item"
  v-on:click="foo"
  >
  {{n}}
  </div>
</template>
?
<script>
export default{
    name:'NoteItem',
    props:{
      n:String
    },
    methods:{                   //v-on監聽事件使用method
      foo(){                  //子組件被點擊時向父組件傳值 ,使用$emit()傳遞事件,告知父組件子組件被點擊
       // this.$emit('plus')   //使用子組件向父組件傳值時使用$emit,使用vuex時注釋此項
       //this.$store.state.count+=1      //使用vuex,在被點擊時修改store中的count
       this.$store.commit('increment')  //使用vuex,在被點擊時提交事件increme
    }
    }
  }
</script>
?
<style>
</style>

NoteList.vue:

<template>
    <div>
    <div class="list-group">
      <!-- #父組件向子組件傳值,將回圈資料使用v-bind傳給子組件,子使用props接收并使用,后替換NoteItem -->
            <NoteItem
            v-for="(note,index) in noteList"
            v-bind:n='note'
            v-bind:key='index'
            v-on:plus='p'>  <!-- #子組件向父組件傳值,使用v-on監聽$emit傳遞的事件 -->
            </NoteItem>
            <p>計數器:{{count}}</p>
        </div>
     </div>
</template>
?
<script>
  import NoteItem from '@/components/NoteItem'
  export default {
    name:'NoteList',
    components:{
       NoteItem
     },
     data:function() {
       return {
         noteList: [
           '第一項','第二項','第三項'
         ],
         //count:0          //使用子組件向父組件傳值時使用data,使用vuex時注釋此項
       }
     },
     methods:{     //v-on監聽事件使用method
       p(){
         //console.log(this.count);
         this.count+=1
     }
     },
     computed:{         //使用vuex時使用此項,要用return回傳
       count:function() {
         return this.$store.state.count
       }
     }
?
}
</script>
<style>
</style>

Vue組件之間的通信:

   父組件->子組件:子組件中要使用:props宣告我接收的變數

   子組件 -> 父組件:1.子組件 通過this.$emit('事件名') 向父組件拋出事件

           2.父組件 通過v-on:事件名='方法名' 監聽子組件的事件從而觸發一個修改資料的方法

13.14使用Django前后端互動

1.django做后端,(先匯入pip3 install django-cors-headers)在Django的settings檔案中配置:

#允許跨域請求的IP(因為vue默認8080埠,Django默認8000埠)
#授權白名單
CORS_ORIGIN_WHITELIST=(
    'http://localhost:8080',
    'http://127.0.0.1:8080'
)

views.py:

from app01 import models
from django.http import JsonResponse
?
def note_list(request):
    ret = {"code": 0}
    data = list(models.Note.objects.all().values("id", "title", "content", "markedcontent"))
    ret["data"] = data
    return JsonResponse(ret) #回傳json字串

2.vue作前端,使用axios發送請求并接受后端的資料(安裝:npm install axios)

App.vue:

<script>
  import 'bootstrap/dist/css/bootstrap.min.css'
  export default {
    name: 'App',
    data: function () {
      return {}
    },
    // 計算屬性
    computed: {
      // 當前Vue實體注冊的所有路由
      allRouters() {
        return this.$router.options.routes
      }
    },
    beforeMount(){     //在掛載前執行store.js中的playNote函式接受后端資料
     this.$store.commit('playNote')
    },
  }
</script>

store.js:將接收到的資料放進商店

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'  //匯入axios
Vue.use(Vuex)
?
export default new Vuex.Store({
    state: {
      count:0,
      notelist:[]
    },
    mutations:{
    
      addnote_store(state,data){   //捕獲NoteEdit傳到store的資料用data接收
        state.notelist.push(data)
      },
      playNote(state,data){
        //在掛載DOM之前向后端獲取資料
        axios.get('http://127.0.0.1:8000/api/notes/')  //訪問note_list視圖函式的路由
               .then(function (response) {          //response接收包含json字串(ret)在內的資料
                   //console.log(response.data.data);
                   state.notelist=response.data.data  //后端回傳到response中的資料(ret)以data命名
        })
               .catch(function (error) {              //獲取后端資料失敗列印錯誤資訊
                  console.log(error);
        });
      }
    },
    actions:{
        
    //方法一:直接將新添加的資料使用 addnote_store添加到 notelist:[]
      addnode_post(context,data){    //異步操作store
     // 發送 POST 請求
       var data=https://www.cnblogs.com/mylu/p/qs.stringify(data) //發送json型別
       axios({
         method: 'post',
         url: 'http://127.0.0.1:8000/api/add/',
         data: data,
         })
         .then(function (response) {
           console.log('插入資料');
             console.log(response);
             context.commit('addnote_store',response.data.data)  // {id: 3, title: "第三條筆記", content: "", markdownContent: ""}
              //此處只讓后端在資料庫中添加資料,不添加到notelist:[]
           })
         .catch(function (error) {
             console.log(error);
           })
           },
    }
    })

NoteList.vue:取出商店里的資料,交給template進行渲染

<template>
        <div class="list-group">
            <NoteItem
            v-for="(note,index) in noteList"
            v-bind:n='note'
            v-bind:key='index'
            </NoteItem>
        </div>
</template>
?
<script>
  import NoteItem from '@/components/NoteItem'
  export default {
    name:'NoteList',
    components:{
       NoteItem
     },
     data:function() {
       }
     },
     computed:{         //使用vuex時使用此項
       count:function() {
         return this.$store.state.count
       },
       noteList:function(){    //使用vuex獲得store的資料
         return this.$store.state.notelist
       }
     }
}
</script>

NoteItem.vue:

<template>
  <div
  class="list-group-item"
  v-on:click="foo"
  >
  {{n.title}}{{n.content}}
  </div>
</template>
?
<script>
export default{
    name:'NoteItem',
    props:{      //props指定接收父組件傳遞的資料
      n:Object
    },
    methods:{                 //v-on監聽事件使用method
      foo(){                  //子組件被點擊時向父組件傳值 ,使用$emit()傳遞事件,告知父組件子組件被點擊
       // this.$emit('plus')   //使用子組件向父組件傳值時使用$emit,使用vuex時注釋此項
       //this.$store.state.count+=1      //使用vuex,在被點擊時修改store中的count
       this.$store.commit('increment')   //使用vuex,在被點擊時提交事件increme
    }
    }
  }
</script>

 

 

 

 

 

 

 

 

 

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/172590.html

標籤:HTML5

上一篇:ES6、Vue指令、 計算屬性、系結Class和Style、條件渲染、串列渲染、表單輸入系結(雙向資料系結)

下一篇:mySQL基礎2

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more