<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          首頁

          jquery 根據下標獲取classname,以及其子元素,修改classname的值

          前端達人

          1. 根據下標獲取對應的classname,實現點擊按鈕觸發當前塊的點擊事件

          <div class="right" @click="meetingfileVisible(index)">
            <span class="foldIcon">
               <i class="el-icon-caret-bottom"></i>
            </span>
          </div>
          <div class="meeting-file">
            <span>與現實生活一致</span>
          </div> 
                      
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          .meeting-file{ display:none; } 
                      
          • 1
          • 2
          • 3
          meetingfileVisible(index) { $(".meeting-file").eq(index).slideToggle("slow"); var cal =$(".foldIcon").eq(index).children("i").attr("class"); cal = cal === 'el-icon-caret-bottom' ? 'el-icon-caret-top' : 'el-icon-caret-bottom'; $(".foldIcon").eq(index).children("i").attr("class", cal); }, 
                      
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          jquery里判斷數組內是否包含了指定的值或元素的方法

          前端達人

          本文講的是在jquery里,如何判斷一個數組里是否包含了指定的值,變量,或其它對象元素的方法。

          在jquery里,我們可以用$.inArray來判斷一個數組里是否包含了指定的值或其它對象元素,來看一個簡單的實例:

          
              
          1. var arr=["aijquery","jquery","I like it"];
          2. var str="aijquery.cn";
          3. if($.inArray(str,arr)<0){
          4. alert("數組里不包含!");
          5. }

          $.inArray是用來獲取指定的值在數組中的位置,從0開始計數(如果沒有找到則返回 -1 。

           

          上面的數組只是普通的字符型數組,下面我們來看其它類型的數組,比如jquery里用$.makeArray來生成的HTML元素類數組:

          
              
          1. //我們首先使用$.makeArray來生成一個數組
          2. var arr=$.makeArray($("div"));

          現在假設這些div里,我們其中有一個ID為"aijquery"的div,那么我們是否可以用上面的方法來判斷這個div是否包含在這個數組里呢?

          答案是可以的,不過需要注意轉換jquery對象為js對象,來看下面站長的測試結果:

          
              
          1. $.inArray($("#aijquery"),arr);//返回-1 這是錯誤的結果
          2. $.inArray($("#aijquery")[0],arr);//返回0 這才是正確的結果

           

           

          PS:關于jquery對象與js對象之間的轉換:jquery對象與dom對象之間互相轉換的方法,使jquery對象可以直接使用js里的方法

           

           
          <!doctype html>
          <html lang="en">
          <head>
          <title>$.inArray判斷元素是否包含在數組中的在線演示-aijQuery.cn</title>
          <script language="JavaScript" src="http://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
          <link rel="stylesheet" >
          </head>
          <body>
            <div id="aijquery">aijquery</div>
            <div>1</div><div>2</div><div>3</div>
            <P id="inarray">div#aijquery在數組里的位置是:</P>
          <script language="javascript"> var arr=$.makeArray($("div")); //在測試的時候,可以把下面代碼中的[0]去掉,換成jquery對象來試 $("#inarray").append($.inArray($("#aijquery")[0],arr)); </script>
          </body>
          </html>
          View Code

          摘自:http://www.aijquery.cn/Html/jqueryrumen/79.html


          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          關于vue播放flv,m3u8視頻流(監控)的方法

          前端達人

          前文:隨著前端大屏頁面的逐漸壯大,客戶的需求也越來越多,大屏上面展示的事物也越來越豐     富。其中實時播放監控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8。

          一、 JessibucaPlayer插件用來播放flv流

          1.首先是先把文件放在vue項目的public下面

          2.在index.html文件里面引入 index.js文件(直接引入即可)

           3.把封裝好的JessibucaPlayer組件放到公共components

          
          
          1. <template>
          2. <div class="jessibuca-player" style="width: 100%; height: 100%">
          3. <div class="container" :id="id" ref="container"></div>
          4. </div>
          5. </template>
          6. <script>
          7. export default {
          8. name: "JessibucaPlayer",
          9. props: {
          10. videoUrl: {
          11. type: String,
          12. default: ""
          13. },
          14. id: {
          15. type: Number,
          16. required: true
          17. }
          18. },
          19. data() {
          20. return {
          21. jessibuca: null // jessibuca 實例化對象
          22. };
          23. },
          24. methods: {
          25. init() {
          26. this.jessibuca = new window.Jessibuca({
          27. container: document.getElementById(this.id), // 播放器容器,若為 string ,則底層調用的是 document.getElementById('id')
          28. videoBuffer: 0.2, // 設置最大緩沖時長,單位毫秒,播放器會自動消除延遲。
          29. forceNoOffscreen: true, // 是否不使用離屏模式(提升渲染能力)
          30. hasAudio: false, // 是否有音頻
          31. rotate: 0, // 設置旋轉角度,只支持,0(默認) ,180,270 三個值
          32. isResize: false, // 1.當為true的時候:視頻畫面做等比縮放后,高或寬對齊canvas區域,畫面不被拉伸,但有黑邊;2.當為false的時候:視頻畫面完全填充canvas區域,畫面會被拉伸
          33. isFullSize: true, // 當為true的時候:視頻畫面做等比縮放后,完全填充canvas區域,畫面不被拉伸,沒有黑邊,但畫面顯示不全
          34. debug: false, // 是否開啟控制臺調試打印
          35. timeout: 30, // 設置超時時長, 單位秒,在連接成功之前和播放中途,如果超過設定時長無數據返回,則回調timeout事件
          36. supportDblclickFullscreen: true, // 是否支持屏幕的雙擊事件,觸發全屏,取消全屏事件。
          37. showBandwidth: false, // 是否顯示網速
          38. operateBtns: {
          39. // 配置功能
          40. fullscreen: false, // 是否顯示全屏按鈕
          41. screenshot: false, // 是否顯示截圖按鈕
          42. play: false, // 是否顯示播放暫停按鈕
          43. audio: false // 是否顯示聲音按鈕
          44. },
          45. keepScreenOn: false, // 開啟屏幕常亮,在手機瀏覽器上, canvas標簽渲染視頻并不會像video標簽那樣保持屏幕常亮。
          46. isNotMute: false, // 是否開啟聲音,默認是關閉聲音播放的。
          47. loadingText: "加載中...", // 加載過程中文案。
          48. background: "" // 背景圖片。
          49. });
          50. // 事件:
          51. this.jessibuca_load()
          52. // 1. 監聽 jessibuca 初始化事件。
          53. this.jessibuca.on("load", () => {
          54. this.jessibuca_load()});
          55. // 2. 信息,包含錯誤信息
          56. this.jessibuca.on("log", data => this.jessibuca_log(data));
          57. // 3. 觸發暫停事件
          58. this.jessibuca.on("pause", this.jessibuca_pause);
          59. // 4. 觸發播放事件
          60. this.jessibuca.on("play", this.jessibuca_play);
          61. // 5. 當前是否全屏
          62. this.jessibuca.on("fullscreen", this.jessibuca_fullscreen);
          63. // 6. 觸發聲音事件,返回boolean值
          64. this.jessibuca.on("mute", this.jessibuca_mute);
          65. // 7. 當解析出音頻信息時回調
          66. this.jessibuca.on("audioInfo", this.jessibuca_audioInfo);
          67. // 8. 當解析出視頻信息時回調
          68. this.jessibuca.on("videoInfo", this.jessibuca_videoInfo);
          69. // 9. 錯誤信息
          70. this.jessibuca.on("error", this.jessibuca_error);
          71. // 10. 當設定的超時時間內無數據返回,則回調
          72. this.jessibuca.on("timeout", this.jessibuca_timeout);
          73. // 11. 流狀態統計,流開始播放后回調,每秒1次
          74. this.jessibuca.on("start", this.jessibuca_start);
          75. // 12. 渲染性能統計,流開始播放后回調,每秒1次
          76. this.jessibuca.on("performance", this.jessibuca_performance);
          77. // 13. 當前網速, 單位KB 每秒1次,
          78. this.jessibuca.on("kBps", this.jessibuca_kBps);
          79. },
          80. // 事件:
          81. jessibuca_load() {
          82. // 監聽 jessibuca 初始化事件。
          83. console.log("on load");
          84. console.log("module", this.videoUrl);
          85. this.methods_play(this.videoUrl);
          86. },
          87. jessibuca_log(data) {
          88. // 信息,包含錯誤信息
          89. console.log("on log", data);
          90. },
          91. jessibuca_pause(flag) {
          92. // 觸發暫停事件
          93. console.log("on pause", flag);
          94. },
          95. jessibuca_play(flag) {
          96. // 觸發播放事件
          97. console.log("on play", flag);
          98. },
          99. jessibuca_fullscreen(flag) {
          100. // 當前是否全屏
          101. console.log("on fullscreen", flag);
          102. if (flag) {
          103. let myEvent = new Event("resize");
          104. setTimeout(() => {
          105. window.dispatchEvent(myEvent);
          106. }, 100);
          107. }
          108. },
          109. jessibuca_mute(flag) {
          110. // 觸發聲音事件
          111. console.log("on mute", flag);
          112. },
          113. jessibuca_audioInfo(data) {
          114. // 當解析出音頻信息時回調,2個回調參數
          115. // 1. numOfChannels:聲頻通道
          116. // 2. sampleRate 采樣率
          117. console.log("audioInfo", data);
          118. },
          119. jessibuca_videoInfo(data) {
          120. // 當解析出視頻信息時回調
          121. // 1. w:視頻寬
          122. // 2. h:視頻高
          123. console.log("videoInfo", data);
          124. },
          125. jessibuca_error(error) {
          126. // 錯誤信息
          127. console.log("error:", error);
          128. },
          129. jessibuca_timeout() {
          130. // 當設定的超時時間內無數據返回,則回調
          131. console.log("timeout");
          132. },
          133. jessibuca_start(s) {
          134. // 流狀態統計,流開始播放后回調,每秒1次
          135. // 1. buf: 當前緩沖區時長,單位毫秒
          136. // 2. fps: 當前視頻幀率,
          137. // 3. abps: 當前音頻碼率,單位bit,
          138. // 4. vbps: 當前視頻碼率,單位bit,
          139. // 5. ts:當前視頻幀pts,單位毫秒
          140. // console.log('stats is', s);
          141. },
          142. jessibuca_performance(performance) {
          143. // 渲染性能統計,流開始播放后回調,每秒1次。
          144. // 0: 表示卡頓、1: 表示流暢、2: 表示非常流程
          145. // console.log('performance', performance);
          146. },
          147. jessibuca_kBps(kBps) {
          148. // 當前網速, 單位KB 每秒1次,
          149. // console.log('kBps', kBps);
          150. },
          151. // 方法:
          152. methods_play(url) {
          153. // 播放
          154. if (this.jessibuca.hasLoaded()) {
          155. this.jessibuca.play(url);
          156. } else {
          157. console.error("視頻數據未加載完畢,請稍后操作");
          158. }
          159. },
          160. methods_mute() {
          161. // 靜音
          162. this.jessibuca.mute();
          163. },
          164. methods_cancelMute() {
          165. // 取消靜音
          166. this.jessibuca.cancelMute();
          167. },
          168. methods_pause() {
          169. // 暫停
          170. this.jessibuca.pause();
          171. },
          172. methods_setVolume(volume) {
          173. // 設置音量
          174. this.jessibuca.setVolume(volume);
          175. },
          176. methods_setRotate(rotate) {
          177. // 設置旋轉角度 0\180\270
          178. this.jessibuca.setRotate(rotate);
          179. },
          180. methods_destroy() {
          181. // 關閉視頻,釋放底層資源
          182. if (this.jessibuca) {
          183. this.jessibuca.destroy();
          184. }
          185. },
          186. methods_fullscreen(flag) {
          187. // 全屏(取消全屏)播放視頻
          188. this.jessibuca.setFullscreen(flag);
          189. },
          190. methods_screenShot() {
          191. // 截圖
          192. // 1. screenshot(filename, format, quality)
          193. // 2. {string} filename、 {string} format、{number} quality
          194. // 3.filename: 保存的文件名, 默認 時間戳、format : 截圖的格式,可選png或jpeg或者webp ,默認 png、quality: 可選參數,當格式是jpeg或者webp時,壓縮質量,取值0 ~ 1 ,默認 0.92
          195. this.jessibuca.screenshot();
          196. },
          197. methods_setBufferTime(time) {
          198. // 設置最大緩沖時長,單位秒,播放器會自動消除延遲。
          199. // {number} time
          200. this.jessibuca.setBufferTime(Number(time));
          201. },
          202. methods_setScaleMode(mode) {
          203. // 設置播放器填充
          204. // 1. 0 視頻畫面完全填充canvas區域,畫面會被拉伸 等同于參數 isResize 為false
          205. // 2. 1 視頻畫面做等比縮放后,高或寬對齊canvas區域,畫面不被拉伸,但有黑邊 等同于參數 isResize 為true
          206. // 3. 2 視頻畫面做等比縮放后,完全填充canvas區域,畫面不被拉伸,沒有黑邊,但畫面顯示不全 等同于參數 isFullSize 為true
          207. this.jessibuca.setScaleMode(Number(mode));
          208. },
          209. restartPlay() {
          210. // 重新加載
          211. this.methods_destroy();
          212. this.methods_play(this.videoUrl);
          213. }
          214. },
          215. mounted() {
          216. this.init();
          217. window.onerror = msg => (this.err = msg);
          218. },
          219. beforeDestroy() {
          220. if (this.jessibuca) this.jessibuca.destroy();
          221. }
          222. };
          223. </script>
          224. <style>
          225. @import url("./JessibucaPlayer.css");
          226. </style>

           4.最后再自己用到的文件里面 引入組件即可

           如有想要文件的請私聊

          二、easyplayer插件播放m3u8流

          教程:

          1.首先npm安裝EasyPlayer、copy-webpack-plugin
          ps:copy-webpack-plugin版本一定一定一定不能大于6.0,否則會報錯。

          
          
          1. npm install @easydarwin/easyplayer --save
          2. npm install copy-webpack-plugin@5.1.2 --save-dev

          2.最重要的地方 一定要把這個地方弄好 那就是在vue.config.js里面

          
          
          1. const CopyWebpackPlugin = require('copy-webpack-plugin')
          2. configureWebpack: {
          3. plugins:[
          4. new CopyWebpackPlugin([
          5. {
          6. from: 'node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer.swf',
          7. to: './libs/EasyPlayer/'
          8. },
          9. {
          10. from: 'node_modules/@easydarwin/easyplayer/dist/component/crossdomain.xml',
          11. to: './libs/EasyPlayer/'
          12. },
          13. {
          14. from: 'node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer-lib.min.js',
          15. to: './libs/EasyPlayer/'
          16. }
          17. ])
          18. ]
          19. }

          3.還需要在public/index.html 引入EasyPlayer-lib.min.js,可以直接在node_modules里找到@easydarwin下的dist/compent/EasyPlayer-lib.min.js復制到pubilc目錄下,還有需要EasyPlayer.wasm同樣放到public目錄下

           4.引入組件使用

           最后效果



          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          總結vue2.0與vue3.0的區別,讓你快速上手

          前端達人

          1:vue3.0和2.0的區別

          2.0數據雙向綁定方面

          Vue2.0使用Object.defineProperty

          原理:通過使用 Object.defineProperty 來劫持對象屬性的 geter 和 seter 操作,當數據發生改變發出通知

          // 數據
          let data = {
              title: '',
              // 備份數據
              _data: {}
          }
          // 定義特性
          Object.defineProperty(data, 'title', {
              // 定義特性屬性或者特性方法
              // 取值方法
              get() {
                  // console.log('get')
                  // 注意:不能通過自身屬性取值
                  // return this.title
                  // 返回備份的數據
                  return this._data.title;
              },
              // 賦值方法
              set(value) {
                  // this指向對象
                  // 注意:不能為自身屬性賦值
                  // this.title = value
                  // 我們可以向備份數據中存儲
                  this._data.title = value;
                  // console.log('set')
                  // 更新視圖
                  updateView(this._data)
              }
          })
          // 視圖模板
          let tpl = document.getElementById('app').innerHTML
          // 實現更新視圖的方法
          function updateView(data) {
              // 處理模板
              let html = tpl.replace(/{{(w+)}}/g, (match, $1) => {
                  // 從data中獲取數據
                  return data[$1] || ''
              })
              // 更新視圖
              document.getElementById('app').innerHTML = html;
          } 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41

          Vue3.0數據綁定

          使用ES6的新特性porxy

          原理:通過ES6的新特性proxy來劫持數據,當數據改變時發出通知

           <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <meta name="yingaxiang" content="width=device-width, initial-scale=1.0">
                <title>vue3.0數據雙向綁定</title>
            </head>
            <body>
                <div>
                   <input type="text" id="input">
                   <span id="text"></span>
               </div>
           </body>
           </html>
           <script>
               var obj = {};
               var obj1 = new Proxy(obj, {
                   // target就是第一個參數obj, receive就是返回的obj(返回的proxy對象)
                   get: function (target, key, receive) {
                       // 返回該屬性值
                       return target[key];
                   },
                   set: function (target, key, newVal, receive) {
                       // 執行賦值操作
                       target[key] = newVal;
                       document.getElementById('text').innerHTML = target[key];
                   }
               })
               document.addEventListener('keyup', function (e) {
                   obj1[0] = e.target.value;
               });
           </script> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32

          總結:

          Vue2.x版本中的雙向綁定不能檢測到下標的變化
          proxy可以劫持整個對象,并返回一個新對象

          2: 創建項目

          未創建過vue腳手架得同學 或者從線上拉項目下來得同學 可以首先 查一下 當前版本

          1:查看當前版本,如果是2開頭說明當前使用的是vue-cli2,3開頭的話就是vue-cli4

          vue --version 
          
          • 1

          2:如果無法識別vue命令說明沒有安裝vue-cli,使用以下說明進行安裝
          安裝3.0版本: 目前新項目搭建腳手架默認安裝得是3.0版本

          npm install -g vue-cli 
          
          • 1

          如果是舊項目2.0版本到3.0切換得同學,即卸載當前版本,安裝另外的版本
          從2.0升級到3.0:

          npm uninstall -g vue-cli
          
          npm install -g @vue/cli 
          
          • 1
          • 2
          • 3

          如果想從新版本降到舊版本得同學 看這里??!

          從3.0降到2.0:

          npm uninstall -g @vue/cli
          npm install -g vue-cli 
          
          • 1
          • 2

          項目初始化

          初始化,vue init <模板名稱(webpack比較常用)> [項目名稱]

          vue init webpack cli2-test 
          
          • 1

          2.0項目初始化參數介紹

          //項目名稱
          
          Project name ...
          
          //作者的信息,會默認從git中讀取信息
          
          Project description ...
          
          Author ...
          
          //vue build的選項 1.runtime-compiler 2.runtime-only (一般選第一個就好)
          
          vue build ...
          
          //是否安裝vue-router,一般選用YES,省去手動創建路由
          
          Install vue-router? ..
          
          //是否使用ESLint檢測代碼規范,規范可根據選項選擇不同的規范庫或者自己添加規范
          
          use ESLint to link your code
          
          //是否寫單元測試 (一般不使用)
          
          Set up unit tests
          
          //是否使用Nightwatch來進行e2e測試 (2代表to e to e 點對點)
          
          Setup e2e test with Nightwatch?
          
          //使用npm或者yarn包管理工具
          
          use npm
          
          use yarn 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35

          3.0初始化,vue create [項目名稱]

          vue create cli3-test
          
          ?項目初始化參數介紹
          
          //選擇一個配置方式
           please pick a perset  (一般選最后一個Manually select features(手動選擇特性) )
           //選擇對于你的工程所需要的特性 (用空格選擇)
           check the features needed for your project
          ( ) Babel //轉碼器,可以將ES6代碼轉為ES5代碼,從而在現有環境執行。 
          ( ) TypeScript// TypeScript是一個JavaScript(后綴.js)的超集(后綴.ts)包含并擴展了 JavaScript 的語法,需要被編譯輸出為 JavaScript在瀏覽器運行,目前較少人再用
          ( ) Progressive Web App (PWA) Support// 漸進式Web應用程序
          ( ) Router // vue-router(vue路由)
          ( ) Vuex // vuex(vue的狀態管理模式)
          ( ) CSS Pre-processors // CSS 預處理器(如:less、sass)
          ( ) Linter / Formatter // 代碼風格檢查和格式化(如:ESlint)
          ( ) Unit Testing // 單元測試(unit tests)
          ( ) E2E Testing // e2e(end to end) 測試
           //對應的配置文件單獨生成還是放在package.json里
           where do you prefer placing config for babel
           //要不要把剛才自己選擇的配置保存下來
           save this as a preset for future projects? 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21

          3:項目的目錄

          Vue2.0版本目錄

          [這里是圖片001]

          Vue3.x 版本目錄

          [這里是圖片002]

          總結:

          • vue-cli2.0與3.0在目錄結構方面,有明顯的不同
          • vue-cli3.0移除了配置文件目錄,config 和 build 文件夾
          • 同時移除了 static 靜態文件夾,新增了 public 文件夾,打開層級目錄還會發現, index.html 移動到 public 中
          • 3.0 config文件已經被移除,但是多了.env.production和env.development文件,除了文件位置,實際配置起來和2.0沒什么不同
          • 沒了config文件,跨域需要配置域名時,從config/index.js 挪到了vue.config.js中,配置方法不變
          • 移除了 static 文件夾,新增 public 文件夾,并且 index.html 移動到 public 中
            在 src 文件夾中新增了 views 文件夾,用于分類 視圖組件 和 公共組件

          4: 3.0版本中項目環境變量配置文件沒有了(dev.env.js / prod.env.js)、

          我們可以通過在項目根目錄下手動創建不同環境的配置文件,具體的環境變量名稱由package.json中運行參數決定,下面舉個例子添加development、production和uat版本的環境變量:

          //  .env.delelopment
          NODE_ENV=development
          VUE_APP_MODE=development
          BASE_URL=/develop
          // .env.production
          NODE_ENV=production
          VUE_APP_MODE=production
          BASE_URL=/api
          
          // .env.uat
          NODE_ENV=production
          VUE_APP_MODE=uat
          BASE_URL=/uat
          
          不同得環境發不同的包 同學要配置得可以參考
          
          // package.json
          ----
          "scripts": {
             "serve": "vue-cli-service serve",
             "build:uat": "vue-cli-service build --mode uat", // 通過 --mode來運行不同的環境,自動識別到.env.uat配置文件
             "build:production": "vue-cli-service build --mode production",
             "lint": "vue-cli-service lint"
           }, 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26

          3.0版本中不同環境的webpack配置文件也沒有了(webpack.base.conf.js / webpack.dev.conf.js / webpack.prod.conf.js)
          同樣,我們也可以再根目錄中創建vue.config.js文件來進行webpack和vue的一些配置

          const path = require('path')
          
          module.exports = {
           publicPath: './', // 基本路徑,打包時加上.
           outputDir: process.env.outputDir, // 輸出文件目錄
           lintOnSave: false, // eslint-loader 是否在保存的時候檢查
           // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
           // webpack配置
           chainWebpack: (config) => {
             config.resolve.symlinks(true)
           },
           configureWebpack: (config) => {
             if (process.env.VUE_APP_MODE === 'production') {
               // 為生產環境修改配置...
               config.mode = 'production'
             } else {
                 // 為開發環境修改配置...
                 config.mode = 'development'
             }
             Object.assign(config, {
               // 開發生產共同配置
               resolve: {
                 alias: {
                   '@': path.resolve(__dirname, './src'),
                   '@c': path.resolve(__dirname, './src/components'),
                   '@p': path.resolve(__dirname, './src/views')
                 } // 別名配置
               }
             })
           },
           productionSourceMap: false, // 生產環境是否生成 sourceMap 文件
           // css相關配置
           css: {
             // extract: true, // 是否使用css分離插件 ExtractTextPlugin
             sourceMap: false, // 開啟 CSS source maps?
             loaderOptions: {
               css: {}, // 這里的選項會傳遞給 css-loader
               less: {
                 modifyVars: {
                   // less vars,customize ant design theme
          
                   // 'primary-color': '#F5222D',
                   // 'link-color': '#F5222D',
                   // 'border-radius-base': '4px'
                 },
                 // DO NOT REMOVE THIS LINE
                 javascriptEnabled: true
               },
               postcss: {
                 plugins: [
                   // 把px單位換算成rem單位
                   require('postcss-pxtorem')({
                     rootValue: 75, // 換算的基數(設計圖750的根字體為32)
                     selectorBlackList: ['.van-'], // 要忽略的選擇器并保留為px。
                     propList: ['*'], // 可以從px更改為rem的屬性。
                     minPixelValue: 2 // 設置要替換的最小像素值。
                   }),
                   require('autoprefixer')
                 ]
                 // plugins: [
                 //   require('autoprefixer')
                 // ]
               } // 這里的選項會傳遞給 postcss-loader
             }, // css預設器配置項 詳見https://cli.vuejs.org/zh/config/#css-loaderoptions
             // modules: false, // 啟用 CSS modules for all css / pre-processor files.
             requireModuleExtension: true
           },
           parallel: require('os').cpus().length > 1, // 是否為 Babel 或 TypeScript 使用 thread-loader。該選項在系統的 CPU 有多于一個內核時自動啟用,僅作用于生產構建。
           pwa: {}, // PWA 插件相關配置 see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
           // webpack-dev-server 相關配置
           devServer: {
             open: false, // 自動打開瀏覽器
             host: '0.0.0.0', // 允許外部ip訪問
             port: 8000, // 端口
             https: false, // 啟用https
             overlay: {
               warnings: true,
               errors: true
             }, // 錯誤、警告在頁面彈出
             // proxy: 'http://localhost:4000' // 配置跨域處理,只有一個代理
             proxy: {
                 '/api': {
                     target: '<url>',
                     ws: true,
                     changeOrigin: true
                 },
                 '/foo': {
                     target: '<other_url>'
                 }
             },  // 配置多個代理
           },
           // 第三方插件配置
           pluginOptions: {} 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57
          • 58
          • 59
          • 60
          • 61
          • 62
          • 63
          • 64
          • 65
          • 66
          • 67
          • 68
          • 69
          • 70
          • 71
          • 72
          • 73
          • 74
          • 75
          • 76
          • 77
          • 78
          • 79
          • 80
          • 81
          • 82
          • 83
          • 84
          • 85
          • 86
          • 87
          • 88
          • 89
          • 90
          • 91
          • 92
          • 93

          5:steup()函數 參考另一篇文章

          https://blog.csdn.net/qq_41328247/article/details/109286022

          6:2.0與3.0生命周期函數比較:

          2.0 周期名稱

          3.0 周期名稱

          說明

          beforeCreate

          setup

          組件創建之前

          created

          setup

          組件創建完成

          beforeMount

          onBeforeMount

          組件掛載之前

          mounted

          onMounted

          組件掛載完成

          beforeUpdate

          onBeforeUpdate

          數據更新,虛擬 DOM 打補丁之前

          updated

          onUpdated

          數據更新,虛擬 DOM 渲染完成

          beforeDestroy

          onBeforeUnmount

          組件銷毀之前

          destroyed

          onUnmounted

          組件銷毀后

          <template>
          
          <router-link to="/">點這里去首頁</router-link>
          
          <hr>
          
          <div class="home">
          
          這里是一個計數器 >>> <span class="red">{{count}}</span> <br>
          
          <button @click="countAdd">點擊加數字</button>
          
          </div>
          
          </template>
          
          <script>
          
          // 你需要使用到什么生命周期,就引出來什么生命周期
          
          import {
          
          onBeforeMount,
          
          onMounted,
          
          onBeforeUpdate,
          
          onUpdated,
          
          onBeforeUnmount,
          
          onUnmounted,
          
          ref
          
          } from 'vue'
          
          export default {
          
          // setup 函數,就相當于 vue 2.0 中的 created
          
          setup () {
          
          const count = ref(0)
          
          // 其他的生命周期都寫在這里
          
          onBeforeMount (() => {
          
          count.value++
          
          console.log('onBeforeMount', count.value)
          
          })
          
          onMounted (() => {
          
          count.value++
          
          console.log('onMounted', count.value)
          
          })
          
          // 注意,onBeforeUpdate 和 onUpdated 里面不要修改值,會死循環的哦!
          
          onBeforeUpdate (() => {
          
          console.log('onBeforeUpdate', count.value)
          
          })
          
          onUpdated (() => {
          
          console.log('onUpdated', count.value)
          
          })
          
          onBeforeUnmount (() => {
          
          count.value++
          
          console.log('onBeforeUnmount', count.value)
          
          })
          
          onUnmounted (() => {
          
          count.value++
          
          console.log('onUnmounted', count.value)
          
          })
          
          // 定義一個函數,修改 count 的值。
          
          const countAdd = () => {
          
          count.value++
          
          }
          
          return {
          
          count,
          
          countAdd
          
          }
          
          }
          
          }
          
          </script>
          
          首先,在 vue 3.0 中,生命周期是從 vue 中導出的,我們需要用到哪些,就導出哪些。 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57
          • 58
          • 59
          • 60
          • 61
          • 62
          • 63
          • 64
          • 65
          • 66
          • 67
          • 68
          • 69
          • 70
          • 71
          • 72
          • 73
          • 74
          • 75
          • 76
          • 77
          • 78
          • 79
          • 80
          • 81
          • 82
          • 83
          • 84
          • 85
          • 86
          • 87
          • 88
          • 89
          • 90
          • 91
          • 92
          • 93
          • 94
          • 95
          • 96
          • 97
          • 98
          • 99
          • 100
          • 101
          • 102
          • 103
          • 104
          • 105
          • 106
          • 107
          • 108
          • 109
          • 110
          • 111
          • 112
          • 113
          • 114
          • 115
          • 116
          • 117
          • 118

          可能不少看官會認為多次一舉,但實則不然。vue 提供這么多的生命周期,有幾個是我們常用的?在大多數的組件中,我們用不到生命周期。即便是頁面級別的應用,可能用到最多的是 onMounted 即可。

          當然,那些綁定時間的操作會用到解綁,因此會用到 onUnmounted。其它的生命周期,正常情況下是基本用不到的。所以,通過引入使用的這種設定,可以減少我們的最終編譯的項目的體積。而且,這樣的引入使用,更加的邏輯清晰。

          其次,除 setup 之外,其他的生命周期函數,都是在 setup 里面直接書寫函數即可。

          7.對文件的引用上

          • Vue2.x中new出的實例對象,所有的東西都在這個vue對象上,這樣其實無論你用到還是沒用到,都會跑一變。
          • vue3.0中可以用ES module imports按需引入,如:keep-alive內置組件、v-model指令,等等。

          8.項目的啟動

          Vue2.x 版本啟動

          npm run dev

          Vue3.x 版本啟動

          npm run serve

          9.語法方面

          1.v-model語法糖廢棄,改用modelValue

          <input v-model="value" />
          
          <input modelValue="value" /> 
          
          • 1
          • 2
          • 3

          2.棄用全局APInew Vue,使用createApp

          const app =?Vue.createApp({}) 
          
          • 1

          3.棄用Vue.prototype,在Vue3中,我們可以使用如下定義方式

          const app = Vue.createApp({})
          app.config.globalProperties.$http = () => {} 
          
          • 1
          • 2

          4.全局方法現在全部在app實例上,例如:

          `app.directive`,`app.use`等 
          
          • 1

          5.現在你需要手動掛載根節點

          main.js
          
          import { createApp } from 'vue'
          
          import App from './App.vue'
          
          createApp(App).mount('#app') 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9

          6.不能再使用Vue.nextTick/this.$nextTick,Vue3中你可以用:

          import { nextTick } from 'vue'
          nextTick(() => {
            // something
          }) 
          
          • 1
          • 2
          • 3
          • 4

          7.Vue3允許template設置key。

          8.正式棄用scopedSlots正式棄用,舊的不去新的不來。

          9.監聽數組變化需要使用deep屬性,否則只能監聽到整個數組被替換。

          10.棄用$children,訪問子組件可以使用$ref

          11.filter被移除,我X,不能再使用|了。

          12.移除事件API,$on,$once,$off不再使用。EventBus方法也不再使用。

          10 新加入了 TypeScript 以及 PWA 的支持

          11:更精準的變更通知

          2.x 版本中,使用 Vue.set 來給對象新增一個屬性時,這個對象的所有 watcher 都會重新運行
          3.x 版本中,只有依賴那個屬性的 watcher 才會重新運行。


          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          前端基本知識介紹

          前端達人

          目錄

          一.前端三劍客

          1.前導

          2.三劍客的分工

          二.VsCode的介紹與配置

          1.vscode的介紹

          2.vscode的下載安裝

          3.vscode的使用

          3.1 圖形界面操作

          3.3 常用插件

          三.HTML基礎標簽

          HTML基礎知識

          1.HTML為何物?

          2.標簽介紹

          3.HTML屬性

          4.HTML標簽骨架

          基本的HTML標簽

          1.HTML標題標簽

          2.換行與空格

          3.HTML段落

          4.字體加粗與傾斜及刪除效果

          5.圖片標簽

          6.超鏈接

          7.列表

          8.布局標簽

          9.表格標簽

          10.表單標簽

          四.CSS基礎選擇器

          CSS介紹

          CSS樣式表介紹

          CSS基礎語法

          CSS選擇器

          選擇器介紹

          基礎選擇器

          復合選擇器

          CSS引入方式

          CSS引入方式介紹

          內部樣式表(嵌入式)

          行內樣式表

          外部樣式表

          五.JS基礎

          Javascript介紹

          1.js的介紹

          2.js的由來

          3.JavaScript組成

          JavaScript基本語法

          1.JavaScript的引入方式

          2.js注釋

          3.js的輸入輸出方法

          4.變量 

          5.數據類型

          6.數據類型轉換

          7.更多JS基礎

          六.JS之DOM

          1.DOM簡介

          什么是DOM?

          DOM樹

          2.獲取元素

          根據ID獲取

          根據類名獲取

          根據標簽名獲取

          通過選擇器獲取

          通過選擇器獲?。ǘ鄠€)

          定位body標簽

          定位html標簽

          3.事件基礎

          事件基礎介紹

          代碼實現

          其它的鼠標事件

          4.操作元素

          操作元素介紹

          改變元素的內容

          操作元素屬性

          操作表單元素

          樣式屬性操作

          更多js操作


          一.前端三劍客

          1.前導

          (1)HTML,CSS,JS都是單獨的語言;

          (2)HTML,CSS,JS構成前端技術基礎;

          2.三劍客的分工

          (1)HTML:負責網頁的架構;

          (2)CSS:負責網頁的樣式,美化;

          (3)JavaScript(JS):負責網頁的行為;

          二.VsCode的介紹與配置

          1.vscode的介紹

          vscode 全稱為 Visual Studio Code ,是?款免費開源的現代化輕量級代碼編輯器,?持?乎所有主流的開發語?的語法?亮、智能代碼補全、?定義快捷鍵、括號匹配和顏?區分、代碼?段、代碼對? Diff、GIT命令 等特性,?持插件擴展,并針對??開發和云端應?開發做了優化。

          2.vscode的下載安裝

          (110條消息) Python爬蟲編程11——JS反爬_彩色的泡沫的博客-CSDN博客https://blog.csdn.net/qq_52914337/article/details/123771663?spm=1001.2014.3001.5501

          3.vscode的使用

          3.1 圖形界面操作

          3.3 常用插件

          我們通常需要代碼提示我們輔助編寫,這個時候就涉及到VSCODE提供的一系列的插件插件安裝在 Extension 中,點擊即可看到一個搜索按鈕,可以輸入關鍵字搜索自己想要的插件。如圖:

          前端開發推薦安裝的幾個插件:

          1. jshint : js 代碼規范檢查。
          2. Beautify :?鍵美化代碼的插件。
          3. Javascript(ES6) code snippets : ES6 語法提示。
          4. Auto Rename Tag :?動重命名標簽。標簽都是成對出現的,開始標簽修改了,結束標簽
          也會跟著修改。
          5. Auto Close Tag :?動閉合標簽。針對?些?標準的標簽,這個插件還是很有?的。
          6. vscode-icons :可選。提供了很多類型的?件夾 icon ,不同類型的?件夾使?不同的
          icon ,會讓?件查找更直觀。
          7. open in browser :可選。右鍵可以選擇在默認瀏覽器中打開當前??。

          三.HTML基礎標簽

          HTML基礎知識

          1.HTML為何物?

          HTML是超文本標記語言(Hyper Text Markup Language)是用來描述網頁的一種語言。

          注意:HTML不是一種編程語言,而是一種標記語言。

          簡單來說,HTML文件也可以直接稱為網頁,瀏覽器的作用就是讀取HTML文件,并且以網頁的形式去展示它們。

          2.標簽介紹

          HTML標簽是由尖括號包圍起來的關鍵詞,如<html></html>。

          單標簽與雙標簽

          (1)雙標簽書寫規則:<雙標簽名稱>內容</雙標簽名稱>,例如<html>內容</html>;

          (2)單標簽書寫規則:<單標簽名稱/>,例如<br/>;

          3.HTML屬性

          HTML屬性指的是標簽屬性,HTML標簽可以擁有屬性,給相關的HTML元素提供更多的信息。

          注意:

          (1)一個HTML標簽可有多個屬性;

          (2)屬性寫在HTML元素的開始標簽;

          (3)屬性總是以名稱/鍵值對的形式出現,比如:class="method";

          4.HTML標簽骨架

           
          
          1. <!DOCTYPE html>
          2. <html lang="en">
          3.    <head>
          4.        <meta charset="UTF-8">
          5.        <meta http-equiv="X-UA-Compatible" content="IE=edge">
          6.        <meta name="viewport" content="width=device-width, initialscale=1.0">
          7.        <title>Document</title>
          8.    </head>
          9.    <body>
          10.    </body>
          11. </html>
          <!DOCTYPE html> :向瀏覽器聲明當前的?檔類型是 html
          <html></html> :是??當中最?的標簽,我們稱之為根標簽
          <head></head> :為??的頭部,它??的內容主要?來定義??標簽及給瀏覽器查看的
          ?些信息
          <meta charset="UTF-8">  定義??的編碼為UTF- 8
          <title></title> :為??標題標簽,它?的內容會顯示在瀏覽器的標簽?上
          <body></body> :為??主體標簽,它??的內容都會顯示在瀏覽器的??窗?區域

          基本的HTML標簽

          1.HTML標題標簽

          HTML的文章標題標簽,如:<h1></h1>~<h6></h6>分六個級別,效果一次減少,并且每個標題都是獨占一行空間。

          如:

           
          
          1. <h1>?號標題</h1>
          2. <h2>?號標題</h2>
          3. <h3>三號標題</h3>
          4. <h4>四號標題</h4>
          5. <h5>五號標題</h5>
          6. <h6>六號標題</h6>

          注意:沒有<h7></h7>標簽;

          2.換行與空格

          2.1空格問題

           ;表示一個空格;

          如:

          hello&nbsp;world

          2.2換行問題

          <br/>表示換行;

          如:

           
          
          1. hello
          2. <br/>
          3. world

          擴展:對于HTML語言,沒有嚴格的語義,即<br>與<br/>或者<br    >瀏覽器都可以識別出來。

           html1.0~5.0  xhtml(嚴格) 五大瀏覽器聯合更新自己的版本HTML5(不嚴格)

          3.HTML段落

          3.1段落標簽介紹

          HTML段落是通過<p></p>標簽進行定義的。

          如:

           
          
          1. <h2>今?學習內容:</h2>
          2. <p>學了標題標簽</p>

          作用:(1)雖然p標簽的文字顯示外觀來看,和普通文字沒有區別,但是它獨占一行;

                     (2)標簽語義化,便于定位;

          3.2標簽語義化

          在合適的地方顯示合理的標簽,搜索引擎也偏好于標簽語義化做的更好的頁面。

          4.字體加粗與傾斜及刪除效果

          4.1加粗標簽

          (1)<b></b>為加粗標簽;

          (2)<strong></strong>為加粗標簽;

          如:

           
          
          1. 普通?字
          2. <b>我是加粗?字1</b>
          3. <strong>我是加粗?字2</strong>

          區別:b標簽為簡單加粗;strong為加粗效果+特別強調效果;

          4.2傾斜

          (1)<i></i> 為傾斜標簽;

          (2)<em></em>也可實現傾斜;

          如:

           
          
          1. 普通?字
          2. <i>我是i</i>
          3. <em>我是em</em>

          區別:em標簽的語義更強一些。i為傾斜了,em為又傾斜了。

          4.3刪除

          <s></s> 刪除效果;

          <del></del> 刪除效果;

          如:

           
          
          1. 原價:<s>998</s>
          2. 現值:9.98
          3. <br>
          4. 原價:<del>999</del>
          5. 現價:9.98

          注意:這兩個標簽沒有任何語義區別,而w3c則說明s標簽要被del標簽替代;

          5.圖片標簽

          <img scr="" alt="" width="" height="" title="">

          (1)src:表示資源,圖?加載的名字
          (2)width(寬),height(?):設置圖?的??。
          (3)title:?標懸停在圖?上的提示?字
          (4)alt:
                          圖?沒有被正常加載時顯示
                          ??閱讀器讀取此內容

          如:

          <img src="Logo2.png" alt="加載中" width="500" height="500" title="?標懸停在圖?上的提示?字">

          6.超鏈接

          6.1超鏈接使用

          超鏈接:點擊頁面發生跳轉;

          使用標簽為:<a href=""></a>

          其中href為:跳轉的網址;

          如:

          <a href="https://www.baidu.com">點擊我可以打開百度</a>

          target=”_blank":在其它窗口打開新連接;

          <a href="https://www.baidu.com" target="_blank">點擊我可以打開百度,并且打開新 的窗?</a>

          6.2空鏈接

          空鏈接:在href中指定為#號即可;

          作用:(1)暫時不知道點擊之后跳轉到哪里,使用空鏈接占位;

                     (2)刷新界面;

          <a href="#"></a>

          7.列表

          列表標簽可分為:無序列表和有序列表。

          7.1無序列表

          使用標簽:<ul><li></li><li></li><li></li></ul>

          注意:

          (1)ul標簽可以嵌套若干個li標簽;

          (2)每一個li標簽代表著每一條數據;

          (3)每個li標簽之間沒有順序;

          如:

           
          
          1. <ul>
          2.    <li>python</li>
          3.    <li>java</li>
          4.    <li>go</li>
          5. </ul>

          7.2有序列表

          使用標簽:<ol><li></li><li></li><li></li></ol>

          注意:

          (1)有序;

          (2)且是ol開始的;

          如:

           
          
          1. <ol>
          2.    <li>基礎班級</li>
          3.    <li>測試</li>
          4.    <li>python</li>
          5. </ol>

          8.布局標簽

          8.1布局標簽的介紹

          布局標簽沒有任何的語義,也沒有所謂的應用場景。

          作用:劃分頁面區域,輔助頁面布局;

          布局標簽為:

          div標簽:<div></div> 大盒子,獨占一行;

          span標簽:<span></span>小盒子,一行可以放多個;

           
          
          1. <div>我是div</div>
          2. <div>我是div</div>
          3. <div>我是div</div>
          4. <div>我是div</div>
          5. <span>我是span</span>
          6. <span>我是span</span>
          7. <span>我是span</span>
          8. <span>我是span</span>

          9.表格標簽

          9.1表格標簽介紹

          作用:展示數據非常整齊;

          基本語法:

           
          
          1. <table>
          2.    <tr>
          3.        <td></td>
          4.    </tr>
          5. </table>

          (1)table標簽:定義表格標簽;

          (2)tr標簽:定義表格中的行;

                          th標簽:表格單元格;

                          td標簽:定義表格中的單元格,必須嵌套其中;

          9.2表格標簽的其他屬性

          (1)align:表格對齊方式。如:left,center,right;

          (2)border:表格邊框。如:1;

          (3)cellpadding:單元邊沿與其內容之間的空白,默認為1像素;

          (4)cellspacing:單元格與單元格之間的空白,默認為2像素;

          (5)width:設置表格寬度;

          注意:需要寫在table標簽里;

          9.3表格結構標簽

          表格結構標簽:表格頭部和表格主體兩大部分;

                  (1)表格頭部區域:<thead>標簽;

                  (2)表格主體區域:<tbody>標簽;

          作用:結構就更加清晰,讓表格有更好的語義;

          9.4合并單元格

          (1)合并單元格方式

                  跨行合并:rowspan="合并單元格的個數";

                  跨列合并:colspan="合并單元格的個數";

          (2)目標單元格

                  跨行:最上冊單元格為目標單元格,寫合并代碼;

                  跨列:最左側單元格為目標單元格,寫合并代碼;

          (3)合并單元格步驟

                  1.先確定是跨行還是跨列合并;

                  2.找到目標單元格;

                  3.刪除多余單元格;

          10.表單標簽

          10.1表單標簽介紹

          表單標簽我們可以直接稱為 form 標簽,標簽書寫如下:

          (1)表單標簽:<form action=""></form>。form表單標簽里面就是所有用戶填寫的表單數據;

          (2)屬性 action:把表單數據交給指定后臺程序去處理;

          (3)屬性 method:傳遞數據時方式方法。

                          1.默認為post請求(隱式提交數據);

                          2.get明文傳送數據;

          如:

           
          
          1. <form action="***.py" method="POST">
          2. </form>

          10.2輸入框與單選多選框

          輸入框標簽(input標簽):<input type="text">

          (1)type:屬性指定輸入框內容;

          (2)type="text":則是最普通的文本輸入框。為單行;

          (3)type="password":則為密碼輸入框。為單行;

                          placeholder:給用戶提示(提升用戶體驗感的屬性),并且在為本域中都可以使用;

          (4)type="radio":單選框;

          (5)type="checkbox":為多選框;

          如:

           
          
          1. <!-- 填寫用戶名及密碼 -->
          2. <span>用戶名:</span>
          3. <input type="text" placeholder="請輸入用戶名">
          4. <br>
          5. <span>密碼:</span>&nbsp;&nbsp;&nbsp;
          6. <input type="password" placeholder="請輸入密碼">
          7. <br>
          8. <!-- 選擇信息:選擇 性別 愛好 -->
          9. <!-- 單選按鈕 -->
          10. <!-- 一組按鈕:他們倆都是來控制性別的,添加name屬性 -->
          11. <span>性別:</span>
          12. <input type="radio" name="gender">
          13. <span></span>
          14. <input type="radio" name="gender">
          15. <span></span>
          16. <br>
          17. <!-- 多選按鈕 -->
          18. <span>興趣愛好:</span>
          19. <!-- <input type="checkbox"> 睡覺
          20. <input type="checkbox"> 打游戲
          21. <input type="checkbox"> 女
          22. <input type="checkbox"> 羽毛球 -->
          23. <!-- 優化:點擊文字也可以選中多選框 -->
          24. <input type="checkbox" id="sleep">
          25. <label for="sleep">睡覺</label>
          26. <input type="checkbox" id="playgame">
          27. <label for="playgame">打游戲</label>
          28. <input type="checkbox" id="liangnv">
          29. <label for="liangnv"></label>
          30. <input type="checkbox" id="yumaoqiu">
          31. <label for="yumaoqiu">羽毛球</label>
          32. <br>

          10.3下拉框

          使用標簽:select為下拉框的標簽,嵌套若干個option標簽。其中每一個option為下拉框中的一個選項。

          selected="selected"。表示默認選中狀態;

           
          
          1. <select name="" id="">
          2.    <option value=""></option>
          3. </select> 123

          如:

           
          
          1. <select name="" id="">
          2.    <option value="">北京</option>
          3.    <option value="">上海</option>
          4.    <option value="">?州</option>
          5.    <option value="" selected="selected">深圳</option>
          6. </select> <br>

          10.4文本域

          使用標簽:<textarea name="", cols="30" rows="10"></textarea>

          (1)cols:列;

          (2)rows:行;

           
          
          1. 建議:
          2. <textarea name="" id="" cols="30" rows="10"></textarea>
          3. <br>

          10.5按鈕標簽

          (1)普通按鈕:

                          標簽:input指定type="button";

                          通過value屬性,指定按鈕的文字;

          如:

           
          
          1. 普通按鈕:
          2. <input type="button" value="按鈕">
          3. <br>

          (2)重置按鈕:點擊重置按鈕就會將數據恢復到默認狀態;

                          標簽:input指定type="reset";

                          注意:重置按鈕自動會有重置的文字;

                          如果指定為value屬性,則顯示什么;

          如:

           
          
          1. 重置按鈕:
          2. <input type="reset" value="重置按鈕">
          3. <br>

          (3)提交按鈕:點擊提交按鈕可以讓表單提交給指定后臺處理;

                          標簽:input指定type="submit";

                          注意:提交按鈕自動會有提交的文字;

          如:

           
          
          1. 提交按鈕:
          2. <input type="submit" value="我是提交">

                    

          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          【前端】vue模板語法知識了解一下,是不是只知道用element-ui組件?

          前端達人

          寫在前面

          上一篇總結了在實操過程中如果遇到了nodejs版本的問題,我們該如何去解決的,還有就是總結了vue2和vue3生命周期的區別,如果感興趣的可以去看看上一篇的內容vue生命周期基礎知識了解一下。

          那知道了vue的生命周期知識點,接下就開始vue模板語法吧,在Vue中,Vue模板對應的就是Vue中的View(視圖)部分,也是Vue重中之一,而在Vue中要了解Vue模板我們就需要從兩個方面來著手,其一是Vue的模板語法,其二就是模板渲染。模板語法較簡單一點,但對于模板的渲染(模板編譯)就會更為復雜一些,如果需要了解模板渲染就需要對Vue的渲染函數,響應式原理之類的要有所了解。

          Vue模板語法

          <!-- App.vue --> <template> <div id="app"> {{ message }} </div> </template> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          上面的代碼演示的僅僅Vue模板中的一種方式,也是最簡單和最常見的一種模板方式。
          在Vue中,模板語法是邏輯和視圖之間的溝通橋梁,使用模板語法編寫的HTML會響應Vue實例中的各種變化,簡單地說,Vue實例中的邏輯可以隨心所欲的渲染在頁面上。

          Vue模板中插值常見的使用方法主要有:文本、原始HTML、屬性、JavaScript表達式、指令和修飾符**等。

          文本

          使用了v-once指令的話,那么該插值就是一次性地插值。也就是說,當數據改變時,插值處的內容不會更新。其使用如下所示:

          <!-- App.vue --> <template> <div id="app"> <span v-once>{{ message }}</span> </div> </template> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          原始HTML

          不能使用v-html來復合局部模板,因為Vue不是基于字符串的模板引擎。另外動態渲染任意的HTML會有一定的危險,因為它很容易導致XSS攻擊。
          插值語法中(也就是{{}})會將數據解釋為普通文本,而非HTML代碼,為了輸出真正的HTML,需要使用v-html指令,比如下面這個示例:

          <!-- App.vue --> <template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <div>{{rawHTML}}</div> <div v-html="rawHTML"></div> </div> </template> <script> export default { name: 'app', data () { return { rawHTML: '<span style="color:red;">原始HTML</span>' } } } </script> 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19

          屬性

          在布爾特性的情況下,它們的存在即暗示為true, v-bind 工作起來略有不同,比如:

          <button v-bind:disabled="isButDisabled">Button</button> 
          
          • 1

          開源Vue模板和主題框架集合

          現在有很多項目vue項目都有很好用的vue模板,這里就總結一些常用的末班集合。

          BootstrapVue

          BootstrapVue 擁有85個以上的組件,45個以上的可用插件,多個指令和670+個圖標, 它提供了可用于Vue.js v2.6的Bootstrap v4.5組件和網格系統的最全面的實現之一 ,并具有廣泛的功能和自動 WAI-ARIA 可訪問性標記。

          采用 BootstrapVue 構建響應式、移動優先、ARIA項目(Accessible Rich Internet Application,可訪問的富媒體應用,即無障礙友好應用),基于 Vue.js 和世界全球最受歡迎的 CSS 前端框架 — Bootstrap v4
          在這里插入圖片描述
          GitHub地址:BootstrapVue直接進入
          在這里插入圖片描述

          element-ui

          element-ui應該常用了,使用 Element需要先引入整個 Element-ui
          在 main.js 中寫入以下內容:

          import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import App from './App.vue'; Vue.use(ElementUI); new Vue({ el: '#app',
            render: h => h(App) }); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11

          在這里插入圖片描述點擊跳轉跳轉地址:Element-ui地址

          還有一些開源的項目比如:

          • 基于Vue2.0和bulma0.2的后臺管理框架 - vue-admin
          • 人人開源 / renren-fast-vue

          renren-fast-vue基于vue、element-ui構建開發,實現renren-fast后臺管理前端功能,提供一套更優的前端解決方案

          前后端分離,通過token進行數據交互,可獨立部署* 主題定制,通過scss變量統一一站式定制* 動態菜單,通過菜單管理統一管理訪問路由* 數據切換,通過mock配置對接口數據/mock模擬數據進行切換* 發布時,可動態配置CDN靜態資源/切換新舊版本.

          • 若依 / RuoYi-Vue
          • VueJS Expo


          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          使用react 開發一個左側三級菜單

          前端達人

          以下是一個使用React開發的左側三級菜單的基本示例:


          import React, { useState } from 'react';
          
          const Menu = () => {
            const [menuItems, setMenuItems] = useState([
              {
                id: 1,
                name: 'Menu Item 1',
                subMenuItems: [
                  { id: 1, name: 'Sub-menu Item 1' },
                  { id: 2, name: 'Sub-menu Item 2' }
                ]
              },
              {
                id: 2,
                name: 'Menu Item 2',
                subMenuItems: [
                  { id: 3, name: 'Sub-menu Item 3' },
                  { id: 4, name: 'Sub-menu Item 4' }
                ]
              }
            ]);
          
            const [selectedMenuItem, setSelectedMenuItem] = useState(null);
            const [selectedSubMenu, setSelectedSubMenu] = useState(null);
          
            const handleMenuItemClick = (menuItem) => {
              setSelectedMenuItem(menuItem.id);
              setSelectedSubMenu(null);
            };
          
            const handleSubMenuClick = (subMenuItem) => {
              setSelectedSubMenu(subMenuItem.id);
            };
          
            return (
              <div className="menu">
                {menuItems.map((menuItem) => (
                  <div key={menuItem.id}>
                    <button onClick={() => handleMenuItemClick(menuItem)}>
                      {menuItem.name}
                    </button>
                    {selectedMenuItem === menuItem.id && (
                      <ul>
                        {menuItem.subMenuItems.map((subMenuItem) => (
                          <li key={subMenuItem.id}>
                            <button onClick={() => handleSubMenuClick(subMenuItem)}>
                              {subMenuItem.name}
                            </button>
                            {selectedSubMenu === subMenuItem.id && (
                              <ul>
                                <li>Sub-menu item details</li>
                              </ul>
                            )}
                          </li>
                        ))}
                      </ul>
                    )}
                  </div>
                ))}
              </div>
            );
          };
          
          export default Menu;
          







          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~

          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 



          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 



          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          使用layui 寫一個左側導航菜單 至三級目錄

          前端達人

          HTML代碼:

          <div class="layui-side layui-bg-black">
            <div class="layui-side-scroll">
              <ul class="layui-nav layui-nav-tree" lay-filter="test">
                <li class="layui-nav-item">
                  <a href="javascript:;">菜單1</a>
                  <dl class="layui-nav-child">
                    <dd><a href="javascript:;">子菜單1-1</a></dd>
                    <dd><a href="javascript:;">子菜單1-2</a></dd>
                    <dd><a href="javascript:;">子菜單1-3</a></dd>
                  </dl>
                </li>
                <li class="layui-nav-item">
                  <a href="javascript:;">菜單2</a>
                  <dl class="layui-nav-child">
                    <dd><a href="javascript:;">子菜單2-1</a></dd>
                    <dd><a href="javascript:;">子菜單2-2</a></dd>
                    <dd>
                      <a href="javascript:;">子菜單2-3</a>
                      <dl class="layui-nav-child">
                        <dd><a href="javascript:;">子菜單2-3-1</a></dd>
                        <dd><a href="javascript:;">子菜單2-3-2</a></dd>
                        <dd><a href="javascript:;">子菜單2-3-3</a></dd>
                      </dl>
                    </dd>
                  </dl>
                </li>
              </ul>
            </div>
          </div>
          

          JavaScript代碼:


          //JavaScript代碼需要引入layui.js文件
          layui.use('element', function(){
            var element = layui.element;
          });
          
          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~ 希望得到建議咨詢、商務合作,也請與我們聯系01063334945。  分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。  藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司 
          
          

          淺講一下 Label Studio

          前端達人

          Label Studio是一種基于Web的開源注釋工具,旨在幫助數據科學家和機器學習工程師更輕松地創建高質量的標簽數據集。它支持多種類型的注釋任務,如文本分類、實體識別、圖像分類等,并且可以集成到現有的機器學習流程中。Label Studio還具有可擴展性和靈活性,可以適應不同的數據類型和注釋需求。


          Label Studio的使用一般分為三個階段:部署、標注和導出數據。

          1. 部署:可以通過下載源代碼進行本地安裝,也可以使用Docker容器快速部署。此外,Label Studio還提供了在云端使用的選項,如Amazon Web Services(AWS)和Google Cloud Platform(GCP)。

          2. 標注:通過創建項目、上傳數據、定義任務類型和注釋模式等步驟,可以開始進行標注。Label Studio支持多種注釋任務,如文本分類、實體識別、圖像分類等。標注人員可以在網頁上直接進行標注,也可以使用API或CLI工具進行標注。

          3. 導出數據:標注完成后,可以將標注結果導出為不同格式的數據集,如JSON、CSV、TSV、YAML等,以供機器學習算法使用。

          對于開發者而言,可以通過自定義插件和擴展來定制化和豐富Label Studio的功能。Label Studio提供了完備的文檔和API參考,使得開發者可以更加便捷地進行開發和調試工作。





          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~

          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 



          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 



          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司。

          使用 react 寫一個基礎表單頁面

          前端達人

          import React, { useState } from 'react';
          
          function BasicForm() {
            const [formData, setFormData] = useState({
              name: '',
              email: '',
              message: ''
            });
          
            const handleChange = (event) => {
              const { name, value } = event.target;
              setFormData({ ...formData, [name]: value });
            };
          
            const handleSubmit = (event) => {
              event.preventDefault();
              console.log(formData);
            };
          
            return (
              <form onSubmit={handleSubmit}>
                <label>
                  Name:
                  <input type="text" name="name" value={formData.name} onChange={handleChange} />
                </label>
                <label>
                  Email:
                  <input type="email" name="email" value={formData.email} onChange={handleChange} />
                </label>
                <label>
                  Message:
                  <textarea name="message" value={formData.message} onChange={handleChange} />
                </label>
                <button type="submit">Submit</button>
              </form>
            );
          }
          
          export default BasicForm;
          





          此表單組件具有三個輸入字段:名稱、電子郵件和消息。useState Hook 用于存儲表單數據,并且 handleChange 函數處理輸入字段值的更改。handleSubmit 函數在提交表單時被調用并打印出表單數據至控制臺。

          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~

          希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 



          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 



          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合