主頁 > 前端設計 > [vue] 從0到1自己構架一個vue專案,說說有哪些步驟、哪些重要插件、目錄結構你會怎么組織

[vue] 從0到1自己構架一個vue專案,說說有哪些步驟、哪些重要插件、目錄結構你會怎么組織

2021-01-03 10:24:18 前端設計

[vue] 從0到1自己構架一個vue專案,說說有哪些步驟、哪些重要插件、目錄結構你會怎么組織

1 專案型別

前端的專案目前來看主要分為小程式開發,H5頁面開發、PC官網、后臺管理系統開發、Native開發,不同的專案所涉及的知識點和環境不太一樣,但是很多方面是相通的,

1.1小程式

由于框架限定在Vue,所以這里指的是使用mpvue、WePY來開發小程式專案,

1.2H5頁面

這里主要是指微信頁面、Webview中的H5頁面開發

1.3 PC官網

為什么單獨劃出來是因為官方的開發主要是用來展示企業資訊、產品,對互動、體驗有一定的要求,會有一些炫酷的影片效果,還有就是官網有可能需要采用SSR(比如Vue的Nuxt.js)來做,來確定良好的SEO,

1.4后臺管理系統

后臺管理系統主要功能在于資料的配置、權限的控制、資料報表的展示、日志功能等,通常又叫CMS,OA,

1.5 Native開發

這個通常就是指用前端技術去開PC應用、APP應用,比如Weex, Electron,

1.6 通吃型

比如uni-app, 可以一套代碼編譯成不同的平臺原始碼,

不同的專案型別決定了其能夠使用的生態、目錄結構、特定的背景關系,這里就以后臺管理系統為例來說一下如何基于Vue來搭建一個專案,
注: 我只會玩這個,湊合閱讀吧
基于@vue/cli的選型
后臺管理系統中vue-router,vuex都是必選的,其它可以自行考慮,
ES6/7 or Typescript ?
鑒于目前Typescript如此流行,很多流行的框架和庫都采用其來寫,IDE友好的智能提示、強型別結束等,在立項時是否考慮采用Typescript來寫Vue專案,如果采用Typescript,是不是很羨慕Angular中的DI注入,那可以考慮在大型專案中引入inversify這個庫;在開發程序中遇到一些庫沒有宣告檔案要學會定義宣告檔案,這個是Typescript初學者最頭疼的問題,

還有一個問題是團隊中有多少人會Typescript,專案周期緊不緊,有沒有時間來試錯,踩坑,

Sass/Less/Stylus/PostCss ?
由于Vue專案開發本身樣式自帶scope,所以不需要像React那樣去選css-in-js框架(目前在React最流行的是styled-components),但是如果我們在Vue中采用JSX的方式來定義組件,是否考慮引入vue-styled-components這個庫(年久失修,完全脫節React版了,但依然是Vue中最好的選擇),在Vue中sass, less, stylus可以在<style>標簽中通過lang=""來指定,如果你想使用PostCss也可以的,就是要自己花點時間去折騰一下,
關于代碼規范和風格
這個主要的選擇就是Prettier 和 Airbnb風格,如果配置不好,在IDE中滿屏的紅色波浪線和黃色的小燈光提示,

在配置eslint或者tslint時主要考慮的點是是否要寫分號,未定義變數等問題,

關于測驗

很多時間前端專案測驗反而拖慢了專案的開發進度,但是在開源專案中良好的測驗是保證專案質量的一個很重要方式,這里通常分為單元測驗(Unit Testing)和端到端測驗(E2E Testing),更多資訊我也沒有什么經驗,自行百度、Google,

通過 @vue/cli 生成專案后,接下來就是添加一些組態檔

通用配置

一個前端專案在開發程序中少不了各種框架、IDE的組態檔,前端專案的組態檔通常格式有xx.json、.xxrc、xx.config.js、xxconfig等方式,

2編輯器配置:.editorconfig

這里最重要的是縮進方式,及Tab大小,建議2個空格作用縮進,

https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
Git忽略檔案配置: .gitignore

這里的配置決定了哪些檔案會被版本控制所忽略

See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

2.1dependencies

/node_modules
/.pnp
.pnp.js

2.2testing

/coverage

2.3production

/build

2.4 misc

.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

3 editor

/.idea

Eslint配置: .eslintrc.js,.eslintignore等

說實話eslint要是配置不好,代碼在IDE中提示真的很惡心,但是配置項又太多,還有很多專有的擴展,這里給出我的一個配置(也是到處copy過來的)

module.exports = {
root: true,
env: {
node: true
},
extends: [“plugin:vue/strongly-recommended”],
rules: {
“no-console”: process.env.NODE_ENV === “production” ? “error” : “off”,
“no-debugger”: process.env.NODE_ENV === “production” ? “error” : “off”,
// 不加分號
“semi”: [0],
// 不能有未定義的變數
“no-undef”: 1,
// 不能有宣告后未被使用的變數或引數
“no-unused-vars”:[2, {
“vars”: “local”,
“args”: “none”
}],
// 禁止修改const宣告的變數
“no-const-assign”: 2,
// 函式引數不能重復
“no-dupe-args”: 2,
// 如果if陳述句里面有return,后面不能跟else陳述句
“no-else-return”: 2,
// 塊陳述句中的內容不能為空
“no-empty”: 2,
// 禁止對null使用==或!=運算子
“no-eq-null”: 2,
// 禁止擴展native物件
“no-extend-native”: 2,
// 禁止不必要的函式系結
“no-extra-bind”: 2,
// 禁止非必要的括號
“no-extra-parens”: 2,
// 禁止多余的冒號
“no-extra-semi”:2,
// 禁止省略浮點數中的0 .5 3.
“no-floating-decimal”: 2,
// 禁止行內備注
“no-inline-comments”: 0,
// 不能有不規則的空格
“no-irregular-whitespace”: 2,
// 不能用多余的空格
“no-multi-spaces”: 1,
// 禁止重復宣告變數
“no-redeclare”: 2,
// 禁止使用javascript:void(0)
“no-script-url”: 0,
// 禁止稀疏陣列, [0,2]
“no-sparse-arrays”: 2,
// 禁止使用三目運算子
“no-ternary”: 0,
// 一行結束后面不要有空格
“no-trailing-spaces”: 1,
// 識別符號不能以_開頭或結尾
“no-underscore-dangle”: 1,
// 是否允許非空陣列里面有多余的空格
“array-bracket-spacing”: [2, “never”],
// 箭頭函式用小括號括起來
“arrow-parens”: 0,
// =>的前/后括號
“arrow-spacing”: 0,
// 塊陳述句中使用var
“block-scoped-var”: 0,
// 逗號風格,換行時在行首還是行尾
“comma-style”: [2, “last”],
// 避免不必要的方括號
“dot-notation”: [0, { “allowKeywords”: true }],
// 必須使用全等
“eqeqeq”: 2,
// 物件字面量中冒號的前后空格
“key-spacing”: [0, {
“beforeColon”: false,
“afterColon”: true
}],
// 變數宣告后是否需要空一行
“newline-after-var”: 0,
// 引號型別 `` “” ‘’
“quotes”: [1, “single”],
// 變數宣告時排序
“sort-vars”: 0,
// 禁止比較時使用NaN,只能用isNaN()
“use-isnan”: 2,
//jsx中使用單引號
“jsx-quotes”: [“error”, “prefer-single”],
// 單個組件無內容自結尾
“vue/html-self-closing”: [“error”, {
“html”: {
“void”: “always”,
“normal”: “always”,
“component”: “always”
},
“svg”: “always”,
“math”: “always”
}],
// 設定html縮進
“vue/html-indent”: [“error”, 2, {
“attribute”: 2,
“baseIndent”: 1,
“closeBracket”: 0,
“alignAttributesVertically”: false,
“ignores”: []
}],
// 屬性順序
“vue/attributes-order”: 1,
// 注釋前面需要添加空格
“spaced-comment”: [“error”, “always”, { “exceptions”: ["-", “+”] }],
// html屬性賦值等號左右不能有空格
“vue/no-spaces-around-equal-signs-in-attribute”: [“error”],
// 強制prop以駝峰命名
“vue/prop-name-casing”: [“error”, “camelCase”],
// 移除多余不使用的空格
“vue/no-multi-spaces”: [“error”, {
“ignoreProperties”: false
}],
// html結尾 >
“vue/html-closing-bracket-newline”: [“error”, {
“singleline”: “never”,
“multiline”: “never”
}],
// 屬性每行數量
“vue/max-attributes-per-line”: [“error”, {
// 一行最多3個屬性
“singleline”: 3,
“multiline”: {
“max”: 1,
“allowFirstLine”: true
}
}],
// 單行html元素內容是否換行
“vue/singleline-html-element-content-newline”: [“error”, {
“ignoreWhenNoAttributes”: true,
“ignoreWhenEmpty”: true,
“ignores”: [
“pre”,
“textarea”,
“span”,
“i”,
“label”,
“el-button”,
“el-radio”,
“el-checkbox”,
“el-link”,
“el-tab-pane”,
“el-dropdown-item”,
“el-step”,
“el-table-column”,
“el-option”
]
}]
},
parserOptions: {
parser: “babel-eslint”
}
};

PostCss配置: postcss.config.js

這個檔案自動生成,里面的內容就是指定autoprefixer兼容配置

Babel配置: babel.config.js

主要是配置Babel的plugins、presets和parse等

StyleLint:.stylelintrc

如果代碼對樣式有一定的規范的話,可以加一個,沒有就不需要配置這個,

{
“extends”: “stylelint-config-standard”,
“plugins”: [“stylelint-scss”]
}

@vue/cli配置:vue.config.js

在這個里面我們可以對@vue/cli的Webpack進行配置和覆寫,

module.exports = {
devServer: {
proxy: {
‘/kpi’: {
target: process.env.VUE_APP_KPI_API,
changeOrigin: true
}
}
}
}

Webpack配置:webpack.config.js

因為在webpack中不能識別@vue/cli中的@路徑,所以需要一個組態檔讓webapck提示正常,具體怎么配置可以自行搜索,

‘use strict’
const path = require(‘path’)

function resolve (dir) {
return path.join(__dirname, ‘.’, dir)
}

module.exports = {
context: path.resolve(__dirname, ‘./’),
resolve: {
extensions: [’.js’, ‘.vue’, ‘.json’],
alias: {
‘@’: resolve(‘src’),
‘_c’: resolve(‘src/components’)
}
}
}

Visual Studio Code配置:.vscode目錄

這里主要是配置基于vscode的代碼除錯以及eslint配置,
版本控制

不管是多人協作開發還個一個人開發在使用git時都需要一套流程規范來執行,

Git Flow

這個每個團隊的做法不太一樣,有的采用多分支開發,有的采用單一master分支開發,有的還采用submodule的方式,有的在專案中使用了lerna來做多packages,甚至有的公司一個分支一個專案,

在開發環境的區分上通常分為生產(線上)環境、預發布環境、開發環境,有的還有什么沙盒環境,很多做得好的公司基于Docker前后端都可以根據每一個commit來發布,

有時候不想把有些代碼提交上去,除了選擇性提交單個檔案外,還有使用git的stash功能,此外如果使用Webstorm可還可以使用其提供的Changelist來快取修改,切換分支,

Git Commit

專案提交的描述如果沒有一定的規范,隨性而為的話,就會讓其它人誤解,通常提交采用英文作為描述,可以多行文字,在社區中有很多流行的方案(比如Conventional Commit),更多的是采用Angular的方式,

Change Log

如果采用了社區統一的commit方式,那么我們就可以基于提交來生成變更記錄,在每一次版本發布時自動關聯Jira中的Issue,

版本號生成

這個通常是按照Semantic Versioning的規范來打tag,具休怎么做可以自行嘗試

在專案中通常使用gitHooks和husky這二個node包來配置上面提到的這些,在git鉤子中我們在每次提交、push前跑一次單元測驗、代碼覆寫率,前端代碼覆寫率一般來說沒有必要加,不然很痛苦,

下面是package.json檔案中相關的配置示例(試驗性代碼)

{
“name”: “your-project-name”,
“version”: “0.1.0”,
“scripts”: {
“clean”: “rm -rf node_modules”,
“serve”: “vue-cli-service serve”,
“build”: “vue-cli-service build”,
“lint”: “vue-cli-service lint --no-fix”,
“stylelint”: “stylelint src/**/.{scss,css,less,css,vue,jsx} --fix",
“eslint”: “eslint --ext .js,.jsx,.vue src --fix”,
“changelog”: “conventional-changelog -p angular -i CHANGELOG.md -s -r 0”
},
“repository”: {
“type”: “git”,
“url”: “http://gitlab.transsion.com/mi/mi-bigdata-admin.git”
},
“dependencies”: {},
“devDependencies”: {
“@commitlint/cli”: “^8.1.0”,
“@commitlint/config-conventional”: “^8.1.0”,
“babel-eslint”: “^10.0.1”,
“conventional-changelog-cli”: “^2.0.23”,
“eslint”: “^6.2.1”,
“eslint-plugin-vue”: “^5.2.3”,
“husky”: “^3.0.4”,
“lint-staged”: “^9.2.3”,
“stylelint”: “^10.1.0”,
“stylelint-config-standard”: “^18.3.0”,
“stylelint-scss”: “^3.9.4”,
},
“gitHooks”: {
“pre-commit”: “lint-staged”
},
“lint-staged”: {
"
.{js,vue}”: [
“vue-cli-service lint”,
“eslint --fix --ext .js,.vue src”,
“git add”
],
“*.{css,scss,less,vue}”: [
“stylelint --fix”,
“git add”
]
},
“husky”: {
“hooks”: {
“commit-msg”: “commitlint -E HUSKY_GIT_PARAMS”
}
}
}

專案檔案和組件測驗檔案

除了在專案根目錄放一個README.MD檔案外,通常還需要一些比如CHANGELOG.md, PLAD.md等檔案,還有一些組件的使用檔案,可以考慮使用styleguide和storybook,
持續集成和部署

目前開源專案通常采用Travis,而一般公司內部專案通常采用Jenkins來做持續集成,在部署上通常采用Docker,集群上使用KubeOperator來管理,

4 API請求方式

通常采用Restfull的方式來請求資料,也可以采用GraphQL的方式來請求,如果采用Restfull的方式通常可以使用axios, fetch api,GraphQL可以使用Apollo Client,
代理和資料Mock

SPA頁面開發通常都是配置代碼來呼叫后端的介面資料,怎么配置可以參考@vue/cli檔案,資料Mock主要用到一個mockjs,至于怎么起服務自行搜索,
專案用到的庫

下面這些庫可以在所有專案中使用

UI框架: Element, iView, vue-strap等

注:UI風格目前有Bookstrap、Antd和Google Materials三種風格,在專案搭建時這也是一個很重要的技術選型,

日期: moment, dayjs

URL決議: query-string, path-to-reqexp

實用方法: lodash

Cookie: js-cookie

混淆ID: hashids

圖表: echarts

Ajax: axios, isomorphic-fetch, vue-apollo

拖拽: Vue.Draggable

Meta修改: vue-meta

注:這些只是我能想到的

5專案目錄劃分

視圖頁面放在 pags或者views中
靜態檔案放在static中
資源檔案放在assets中
樣式檔案放在styles中
輔助庫放在utils中
組態檔可以放在config或者constants中
vuex的檔案放在stores中,至于getters, actions, mutation, modules可以參考vuex的檔案
路由檔案放在routes中
所有組件放在components中
共享代碼也可以使用shared作為目錄
布局組件可以放在layouts目錄中

權限配置

主要分為頁面權限(路由)、功能權限,采用多級角色劃分方式,選單配置資料直接通過介面回傳

6開發

接著建好專案後,通常會依照需求裝入以下插件:

svg-loader - 將 svg 作為組件使用
axios
dayjs - 以往常用的 moment.js 除了既有舊專案外,構建團隊今年中建議改採其他更為輕量的 library
bootstrap-vue 看設計稿,如果是需要手刻的就偏向引入頁面結構組件如 b-row

專案目錄大致如下,將剛剛預先規劃的 component、views 先建立好,接著便可以開始切分組件 css:

src
├── App.vue
├── assets
│ ├── img
│ │ ├── access_time-24px.svg
│ │ ├── accessibility_new-24px.svg
│ │ ├── add_circle_outline-24px.svg
│ │ ├── alarm.svg
│ │ ├── apps-24px.svg
│ └── scss
│ ├── abstracts
│ ├── base
│ ├── main.scss
│ └── plugin
├── components
│ ├── Base
│ │ ├── BaseCard.vue
│ │ ├── BaseCol.vue
│ │ ├── BaseLoadCard.vue
│ │ ├── BaseRow.vue
│ │ └── FlexSystem.md
│ ├── Home
│ │ ├── HomeChart.js
│ │ ├── HomeItem.vue
│ │ ├── HomeNavbar.vue
│ │ ├── HomeSideBar.vue
│ │ └── HomeSortbar.vue
│ └── Information
│ └── InformationChart.js
├── main.js
├── router
│ └── index.js
├── service
│ ├── api.js
│ └── dayFormate.js
├── store
│ └── index.js
└── views
├── Home.vue
└── Information.vue

頁面路由及組件樣式切分完成,接著便可以開始開發功能以及串接資料,

7個人簡介

我是歌謠,歡迎和大家一起交流前后端知識,放棄很容易,
但堅持一定很酷,

主目錄

與歌謠一起通關前端面試題

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

標籤:其他

上一篇:用js寫的旋轉木馬,在新年的第一天,獻給各位剛登基的皇帝,讓你的后宮轉起來!

下一篇:node處理圖片問題 !!!

標籤雲
其他(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