国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vue插件開發練習--實用彈窗

muzhuyu / 2879人閱讀

摘要:前言上回說了組件組件開發練習焦點圖切換的一個練習項目,這次換下口味,說下的插件練手的項目。和組件開發的目錄相比,區別就在于這個文件夾上。開發過程把項目跑起來首先,先弄這個組件。最后還需要一個變量,控制彈窗是否顯示。

1.前言

上回說了組件(vue組件開發練習--焦點圖切換)的一個練習項目,這次換下口味,說下vue的插件練手的項目。相對于現在之前的焦點圖切換的組件,這個可能就更簡單了,基本就是熟悉下插件開發的步驟就可以了!這個項目,我更建議大家動手練習了,這個彈窗比之前的焦點圖更加的實用性,也更常用。同時也能讓大家熟悉下vue的插件開發的流程。代碼同樣,我會上傳到github(ec-dialog),需要的可以直接去看代碼!

建議
1.下面的步驟,最好在自己本地上跑起來,根據文章的步驟,逐步完成,如果只看代碼,很容易懵逼的。
2.如果不清楚哪個代碼有什么作用,可能自己調試下,把代碼去掉后,看下有什么影響,就很容易想出代碼有什么作用了!
2.項目目錄

還是一個很簡單的目錄,各個目錄不知道有什么用的,可以移步去看我上一篇文章。和組件開發的目錄相比,區別就在于src/js/components這個文件夾上。

3.開發過程 3-1.把項目跑起來

首先,先弄src/js/components/alert這個組件。還是一樣,,先在src/js/components/alert/src/main.vue。輸出‘守候’。代碼如下



然后來到"alert/index.js"。這個術語叫什么什么文件,我不太清楚,暫時就叫,插件配置文件吧!代碼如下(注意看注釋)

import Vue from "vue"
import AlertComponent from "./src/main.vue"
//合并對象函數,這個方法是會改變,第一個參數的值的
function merge(target) {
    for (let i = 1, j = arguments.length; i < j; i++) {
        let source = arguments[i] || {};
        for (let prop in source) {
            if (source.hasOwnProperty(prop)) {
                let value = source[prop];
                if (value !== undefined) {
                    target[prop] = value;
                }
            }
        }
    }
    return target;
};
let instance;
//extend 是構造一個組件的語法器.傳入參數,返回一個組件
let AlertConstructor = Vue.extend(AlertComponent);

let initInstance = ()=>{
    //實例化ConfirmConstructor組件
    instance = new AlertConstructor({
        el: document.createElement("div")
    });
    //添加到boby
    document.body.appendChild(instance.$el);
}

let Alert = (options={}) => {
    //初始化
    initInstance();
    // 將單個 confirm instance 的配置合并到默認值(instance.$data,就是main.vue里面的data)中
    merge(instance.$data, options);
    //返回Promise
    return new Promise((resolve, reject)=>{
        instance.show = true;
        let success = instance.success;
        let cancel = instance.cancel;
        instance.success = () => {
            //先執行instance.success(main.vue里面的success函數)
            success();
            //再執行自定義函數
            resolve("ok");
        }
    });

}
export default Alert;

然后來到components/js/index.js這個文件,配置組件和API,代碼如下

import alert from "./alert/index.js"

const install = function(Vue) {
    //注冊全局組件
    Vue.component(alert.name, alert)
    //添加全局API
    Vue.prototype.$alert = alert
}
export default install

然后在模板文件,index.html里面設置一個div,方便掛載測試





    
    Title


然后在入口文件index.js里面,使用插件

require("./index.html");
//引入sass
require("./src/sass/com.scss");
import Vue from "vue"
import dialog from "./src/js/components/index";
Vue.use(dialog)
let App = new Vue({
    el: "#app",
    data(){
        return {
            "name": "index"
        }
    },
    mounted(){
        this.$alert();
    }
});

然后,命令行 $ npm run dev,結果完美

3-2.樣式修改

完成了上一步,這個插件的一大半就算完成了!剩下的工作主要開發的就是在components/../main.vue這文件開發。
首先,先別急寫代碼,想一下,一個彈窗大概需要什么字段。

參考上面,發現有一個標題,一個內容,一個按鈕文字。最后還需要一個變量,控制彈窗是否顯示。然后一個點擊按鈕的操作函數。然后還有樣式,大概如下

樣式這個不多說,其他的字段,一個蘿卜一個坑的填進去就好,代碼如下




運行效果

3-3.使用插件

大家知道,在前面步驟,"alert/index.js"這里就已經返回的一個Promise。所以,用法就是像Promise那樣使用!

所以在入口文件,index.js里面直接寫

mounted(){
    this.$alert({
        title:"提示2",
        content:"這里是提示內容2"
    }).then(()=>{
        this.name="守候"
        alert(this.name)
    })
}

運行效果

4.其它彈窗

還是那句話,程序員不會滿足于現狀,只有一種彈窗,怎么夠,下面我再增加一種,和上面那個基本一樣,就是多了一個取消按鈕而已。
這里我就再講一個簡單的栗子,至于彈窗的樣式,太多了,我在這里就不展開說了,大家需要的可進行拓展。

首先,創建這個目錄(可以直接把alert那個目錄拷貝過來,然后再修改幾下就完事了)

然后,針對comfirm/src/main.vue文件,添加下面的代碼(下面的代碼基本就是從alert/src/main.vue拷貝過來的,就是增加一個取消按鈕的對應一個字段和操作函數)




然后就是comfirm/index.js(也是基本拷貝的,我就截圖,告訴大家改哪里吧,這個得稍微細看才知道改哪里)

然后components/index.js

import comfirm from "./comfirm/index.js"
import alert from "./alert/index.js"

const install = function(Vue) {
    //注冊全局組件
    Vue.component(comfirm.name, comfirm)
    Vue.component(alert.name, alert)
    //添加全局API
    Vue.prototype.$confirm = comfirm
    Vue.prototype.$alert = alert
}
export default install

最后在入口文件,index.js使用

require("./index.html");
//引入sass
require("./src/sass/com.scss");
import Vue from "vue"
import dialog from "./src/js/components/index";
Vue.use(dialog)
let App = new Vue({
    el: "#app",
    data(){
        return {
            "name": "index"
        }
    },
    mounted(){
        this.$confirm({
            title:"提示",
            content:"這里是提示內容",
            submitText:"提交",
            cancelText:"返回"
        }).then(()=>{
            this.$alert({
                title:"提示2",
                content:"這里是提示內容2"
            }).then(()=>{
                this.name="守候"
                alert(this.name)
            })
        }).catch((err)=>{
            alert(err)
        })
    }
}); 

運行結果,就是這樣

5.小結

一個簡單的彈窗就到這里了,很簡單,但是在我開發那里還是能用,能暫時滿足。但是這個肯定是需要維護的,畢竟很多的項目都需要彈窗。大家也根據自己的需要進行拓展!以上的案例也很簡單,容易懂。基本都是記流程。但是這個我很建議大家邊動手,邊看文章。這個可以讓自己練習下基于vue開發插件,是一個不錯的練習,希望能幫到大家學習到新的知識!最后,如果覺得文章那里寫的不好或者寫錯了,歡迎指出!

-------------------------華麗的分割線--------------------
想了解更多,關注關注我的微信公眾號:守候書閣

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91776.html

相關文章

  • 【收藏】2019年最新Vue相關精品開源項目庫匯總

    摘要:前言本文的前身是源自上的項目但由于該項目上次更新時間為年月日,很多內容早已過期或是很多近期優秀組件未被收錄,所以小肆今天重新更新了內容并新建項目。提交的項目格式如下項目名稱子標題相關介紹如果收錄的項目有錯誤,可以通過反饋給小肆。 前言 本文的前身是源自github上的項目awesome-github-vue,但由于該項目上次更新時間為2017年6月12日,很多內容早已過期或是很多近期優...

    williamwen1986 評論0 收藏0
  • 手把手教你擼個vue2.0彈窗組件

    摘要:組件結構同組件結構通過方法獲取元素的大小及其相對于視口的位置,之后對提示信息進行定位。可以用來進行一些復雜帶校驗的彈窗信息展示,也可以只用于簡單信息的展示。可以通過屬性來顯示任意標題,通過屬性來修改顯示區域的寬度。 手把手教你擼個vue2.0彈窗組件 在開始之前需要了解一下開發vue插件的前置知識,推薦先看一下vue官網的插件介紹 預覽地址 http://haogewudi.me/k...

    mrli2016 評論0 收藏0
  • 手把手教你擼個vue2.0彈窗組件

    摘要:組件結構同組件結構通過方法獲取元素的大小及其相對于視口的位置,之后對提示信息進行定位。可以用來進行一些復雜帶校驗的彈窗信息展示,也可以只用于簡單信息的展示。可以通過屬性來顯示任意標題,通過屬性來修改顯示區域的寬度。 手把手教你擼個vue2.0彈窗組件 在開始之前需要了解一下開發vue插件的前置知識,推薦先看一下vue官網的插件介紹 預覽地址 http://haogewudi.me/k...

    taoszu 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<