日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

byview 是一個自己開發的,用于引導vue組件直接工作在瀏覽器中而不需要腳手架的一個微框架(啟動引擎),使得vue在瀏覽器中開發體驗跟vue-cli相似。無需獨立編譯資源文件,修改立即生效。但由于在瀏覽器端,故無法使用npm包管理工具。

背景: 由于某些原因不能夠使用vue工程化完全重構整個舊的系統項目,但又想在其基礎上使用vue來開發新功能。byview的目標主要是面向內部人員的老舊系統, 可以將老舊系統中的一小部分通過byview中的vue功能來實現。

byview使用vue3作為前端框架,element-plus作為ui框架。

byview: 引導vue組件正確工作在舊系統中的一個微框架(啟動引擎)。

引入byview

byview的核心文件為 core.js, 在html中直接引入core.js即可

<script src="byview/core.js"></script>

然后就可以通過 $byview 變量來使用 byview 的功能

配置

如要使用byview, 需要先對byview做一些前置配置, 以便byview能夠正確地獲取資源

  1. 設置 window.WEBROOT_URL 變量的值來設置當前的網站項目url, 它默認為 /
  2. 設置 window.BYVIEW_URL 來設置byview目錄的URL地址, 它默認為 byview/ (相對于window.WEBROOT_URL)
  3. 設置 window.BYVIEW_RES_VERSION 來控制byview組件的超級緩存, 它是資源下載的版本號。當開啟了byview的超級緩存后,每當有資源(css,js,vue)變更時,需要更新該版本號 用來告訴byview資源更新了

編寫vue模板文件

vue文件和vue-cli中的vue文件基本沒有差別,由于用的是Vue3, 故推薦使用Composition Api 方式編寫組件

vue文件的格式為html格式。現在編寫一個名為index.vue的文件, 示例代碼如下:

<!-- 模板 -->
<template>
    <div>
        text:<span class="text">{{helloText}}</span>
    </div>
</template>

<!-- 腳本 -->
<script>
 const {ref} = Vue;

 export default {
     
     setup() {
         let helloText = ref("你好");

         return {
             helloText
         }
     }
 }
</script>

<!-- 限定當前組件的樣式 -->
<style scoped>
    .text {
        color: green;
    }
</style>

 

一個基于Vue3的無編譯小框架 byview

渲染結果

 

渲染

調用 $byview.run('index.vue', 'body') 將文件渲染到body中

  • 第一個參數是vue文件的路徑, 其相對于網站根目錄, 也就是 window.WEBROOT_URL 的值
  • 第二個參數是一個html元素選擇器 第三個參數將原樣傳遞給組件 props的params屬性
<script>
    $byview.run('index.vue', 'body');
</script>

加載其他組件

我們新增一個組件文件為 comp.vue

內容如下:

<template>
    <span>{{text}}</span>
</template>

<!-- 腳本 -->
<script>
 export default {
     props: {
          text: {
                default: "test"
          }  
    }
 }
</script>

<!-- 限定當前組件的樣式 -->
<style scoped>
    span {
        color: red;
    }
</style>

然后在index.vue中加載這個組件:

<!-- 模板 -->
<template>
    <div>
        text:<span class="text">{{helloText}}</span>
        <br>
        <test-comp></test-comp>
        <br>
        <test-comp text="測試一下"></test-comp>
    </div>
</template>

<!-- 腳本 -->
<script>
    let [comp] = await byview_load_components('./comp.vue');
    export default {
        components: {
            TestComp: comp
        },
        
        setup() {
            let helloText = "你好";
            
            return {
                helloText
            }
        }
    }
</script>

<!-- 限定當前組件的樣式 -->
<style scoped>
    .text {
        color: green;
    }
</style>
一個基于Vue3的無編譯小框架 byview

渲染結果

 

還可以將組件名稱寫在name屬性中, 然后在index.vue 中通過
byview_load_name_components 或者 $
byview.loadComponentGroupByName 加載組件:

  • comp.vue:
<template>
    <span>{{text}}</span>
</template>

<!-- 腳本 -->
<script>
 export default {
    name:'TestComp'
    props: {
        text: {
            default: "test"
        }  
    }
 }
</script>

<!-- 限定當前組件的樣式 -->
<style scoped>
    span {
        color: red;
    }
</style>

 

  • index.vue:
<!-- 模板 -->
<template>
    <div>
        text:<span class="text">{{helloText}}</span>
        <br>
        <test-comp></test-comp>
        <br>
        <test-comp text="測試一下"></test-comp>
    </div>
</template>

<!-- 腳本 -->
<script>
    export default {
         components: await byview_load_name_components('./comp.vue'),
        
        setup() {
            let helloText = "你好";
            
            return {
                helloText
            }
        }
    }
</script>

<!-- 限定當前組件的樣式 -->
<style scoped>
    .text {
        color: green;
    }
</style>


byview_load_name_components 的第一個參數可以是個數組, 同時加載多個組件

加載外部的js腳本

可以通過 $byview.loadScript 或者 byview_load_script 方法加載一個或多個外部的js庫文件或者配置數據

<script >
const [aResult, bResult] = await $byview.loadScript(['a.js', 'b.js']);
</script>

加載外部css文件

可以通過 byview_load_css 或者 $byview.loadCss 方法加載一個或多個外部的css到頁面中

在vue文件中可以通過link標簽引入外部css文件:

<link rel="stylesheet" href="sample2/test.css" scoped />

link 標簽的scoped屬性為可選, 表示樣式是否僅當前組件生效 和 style 的 scoped 屬性作用一樣 href 屬性的路徑是相對于網站根目錄, 如果需要先對于當前vue文件, 必須以 ./ 開頭

緩存

所有組件、js、css等加載,只要下載成功,就會緩存到內存中,下次會從內存中直接取出.

除了內存緩存外, 組件下載還支持文件緩存,下載過的文件瀏覽器刷新之后不會再次下載, 會從緩存數據庫中讀取以提高響應速度。

除了文件緩存之外, 組件緩存會將已經解析好的組件結構直接緩存,不會再次解析vue文件的內容(瀏覽器刷新之后也不會再次解析vue文件中dom樹)。

緩存是可以通過設置不同的 window.BYVIEW_RES_VERSION 值來清除緩存, 一般手動進行設置該值, 可以集成到后臺系統的頁面中手動更新所有緩存。

內存緩存每次刷新瀏覽器之后就會丟失。 文件和組件緩存如果開啟, 在程序中可以通過 $
byview.superCache.clearAllResourceCache 方法清空資源(文件, js, css等)緩存。

一個基于Vue3的無編譯小框架 byview

緩存效果

調試

  • 在瀏覽器中查看vue文件的js

瀏覽器以chrome為例子, 可以在source面板按快捷鍵 ctrl+p 然后直接輸入vue文件的名稱即可找到對應的js文件, 可以在該文件中打斷點調試vue文件.

一個基于Vue3的無編譯小框架 byview

 


一個基于Vue3的無編譯小框架 byview

 

這里的.vue文件的內容只有js內容, 沒有template的內容

  • 在瀏覽器中查看vue文件的模板內容

我們可以在控制臺 輸入 bv._loadedComponents 查看所有的已加載組件, 并找到其中的 template 屬性查看具體的模板內容

一個基于Vue3的無編譯小框架 byview

 

bv 是 $byview 變量的簡稱

  • 查看vue組件的實例

當我們需要查看vue組件的實例對象已經其當前的數據, 可以通過 bv.$conmponents 查看所有的組件示例

例如 bv.$
components.TestComp.last.text

bv.$components.TestComp.last 表示最后一個 TestComp 組件(頁面中可能有多個TestComp實例)

一個基于Vue3的無編譯小框架 byview

 

  • 在控制臺中調用內置方法

我們可以通過 byview_get_gblprops 方法來獲取 vue 的 globalPropertiesConfig 屬性, 例如打開一個內置的帶驗證碼的確認對話框:

console.log( 
  await byview_get_gblprops()
  		.$byConfirmHtmlCode('確定進行危險操作嗎?')
  ? '繼續' : '不繼續' 
)
一個基于Vue3的無編譯小框架 byview

 

  • 清空緩存

調用 $
byview.superCache.clearAllResourceCache 方法清空資源緩存

  • byview 調試選項

在控制臺可以通過 byview_get_gblprops().$byOpenDebugConfigDialog() 方法打開調試面板

調試面板中可以控制各個緩存開關,在調試模式下, 建議關閉文件緩存和內存緩存

一個基于Vue3的無編譯小框架 byview

 

 

結尾

更多用法請查看文檔

git地址:byview: 引導vue組件正確工作在舊系統中的一個微框架(啟動引擎)。

離線文檔 docs.html 克隆代碼后可以在瀏覽器中直接打開查看

分享到:
標簽:Vue3
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定