> 웹 프론트엔드 > JS 튜토리얼 > npm을 사용하여 vue2.0+ 플러그인을 게시하는 단계에 대한 자세한 설명

npm을 사용하여 vue2.0+ 플러그인을 게시하는 단계에 대한 자세한 설명

php中世界最好的语言
풀어 주다: 2018-05-15 09:10:15
원래의
2477명이 탐색했습니다.

이번에는 npm을 사용하여 vue2.0+ 플러그인을 게시하는 단계에 대해 자세히 설명하겠습니다. npm을 사용하여 vue2.0+ 플러그인을 게시할 때의 주의 사항은 무엇입니까? 실제 사례를 살펴보겠습니다.

이 글은 vue 플러그인 개발부터 npm 출시까지 최대한 자세하고 명확하게 여러분이 만든 것을 대다수의 "네티즌"들에게 보여드릴 생각에 조금 설렙니다...^_ ^

첫 번째 이전 플러그인 렌더링 ------ github 포털

자세한 방법에 대해 이야기해 보겠습니다.

1. 프로젝트 초기화

vue init webpack-simple vue-pay-keyboard
로그인 후 복사

vue를 사용하여 간단한 프로젝트를 생성합니다. main.js와 app.vue를 제외한 src 파일을 삭제하고, app.vue에서 불필요한 내용을 삭제합니다.

프로젝트 디렉토리 완료 후

2. 플러그인 작성

vue-pay-pop. (소스코드는 github에서 직접 확인하실 수 있습니다.)

<template>
 <p class="pay-box">
  <!-- 输入框及键盘 -->
  <p :class="payPopOptions.isShow? &#39;pay-wrapper pay-wrapper-active&#39; : &#39;pay-wrapper&#39;">
   <p class="pay-container" v-if="status">
    <p class="pay-title">
     {{title}}
     <p class="close-pay" @click="closePay">
      <svg t="1501505446265" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1904" xmlns:xlink="http://www.w3.org/1999/xlink" width="18" height="18" class="icon"><path data-v-7c990886="" d="M550.659 490.565l324.395-324.386c10.945-10.945 10.945-28.699 0-39.644-10.948-10.95-28.704-10.95-39.648-0.004L511.01 450.916 186.625 126.53c-10.946-10.947-28.703-10.947-39.648 0-10.946 10.95-10.946 28.703 0 39.648l324.385 324.386-324.385 324.401c-10.946 10.944-10.946 28.703 0 39.65 10.945 10.943 28.702 10.943 39.648 0L511.01 530.213l324.396 324.401c10.944 10.944 28.7 10.944 39.648 0 10.945-10.946 10.945-28.705 0-39.649L550.66 490.565z" p-id="1905"></path></svg>
     </p>
    </p>
    <p class="pay-input-wrapper">
     <p class="pay-input" v-for="(item, index) in pwdLength" :key="index">
      <input type="password" :value="val[index]" disabled>
     </p>
    </p>
    <p class="pay-keyboard-wrapper">
     <p class="pay-keyboard">
      <p class="pay-key" v-for="item in keyBoards" :key="item" @click="val2input(item)">
       {{item}}
      </p>
     </p>
     <p class="pay-keyboard-bottom">
      <p class="pay-key-bottom pay-key-blank"></p>
      <p class="pay-key-bottom pay-key-middle" @click="val2input(&#39;0&#39;)">0</p>
      <p class="pay-key-bottom pay-key-del" @click="delVal" v-html="del"></p>
     </p>
    </p>
   </p>
   <!-- 结果显示 -->
   <p class="pay-result" v-if="!status">
    <p class="loader"></p>
    <p>{{loadingTxt}}</p>
   </p>
  </p>
  <!-- 遮罩层 -->
  <p class="gray-wrapper" v-show="payPopOptions.isShow"></p>
 </p>
</template>
로그인 후 복사
export default {
  name: 'vue-pay-pop',
  props: ['payPopOptions'],
  data () {
   return {
    //可选参数,支持改变
    //顶部文字
    title: this.payPopOptions.title || '请输入支付密码',
    //密码长度
    pwdLength: this.payPopOptions.pwdLength || 6,
    //底部删除按钮
    del: this.payPopOptions.del || '<svg t="1524794920212" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1048" xmlns:xlink="http://www.w3.org/1999/xlink" width="40" height="30"><defs><style type="text/css"></style></defs><path d="M798.675138 191.774745c44.172035 0 80.109526 35.753295 80.109526 79.69918l0 445.373557c0 43.945885-35.93749 79.69918-80.109526 79.69918L382.443295 796.546661c-25.555026 0-49.780777-12.279674-64.804958-32.845059L154.967444 541.013801c-20.472264-28.025287-20.472264-65.680908 0-93.707219L317.638337 224.617757c15.023158-20.566408 39.249933-32.843012 64.804958-32.843012L798.675138 191.774745M798.675138 177.709401 382.443295 177.709401c-30.16502 0-58.508555 14.365172-76.240405 38.641065L143.531997 439.038268c-24.009833 32.865525-24.009833 77.378321 0 110.245893l162.670893 222.685755c17.732873 24.276916 46.075385 38.641065 76.240405 38.641065l416.231843 0c52.051493 0 94.247524-41.977044 94.247524-93.762477l0-445.373557C892.922662 219.688491 850.726631 177.709401 798.675138 177.709401L798.675138 177.709401zM475.470015 356.690772l218.792075 218.791052c10.984169 10.986215 10.984169 28.795836 0 39.780005-10.986215 10.986215-28.795836 10.986215-39.781028 0L435.69001 396.470777c-10.986215-10.984169-10.986215-28.795836 0-39.780005C446.674179 345.704556 464.485847 345.704556 475.470015 356.690772zM437.268972 578.919109l223.685525-224.042659c11.228739-11.247158 29.438473-11.247158 40.669258 0 11.230786 11.249205 11.230786 29.487591 0 40.73475L477.93823 619.654882c-11.228739 11.249205-29.438473 11.249205-40.669258 0C426.039209 608.404654 426.039209 590.167291 437.268972 578.919109z" p-id="1049" fill="#1296db"></path></svg>',
    //默认等候文字
    loadingTxt: this.payPopOptions.loadingTxt || '请稍候...',
    //默认等候时间
    loadingTime: this.payPopOptions.loadingTime || 1000,
    //显示结果后,多久重回默认
    resultTime: this.payPopOptions.resultTime || 1000,
    //成功文字
    successTxt: this.payPopOptions.successTxt || '支付成功',
    //失败文字
    failTxt: this.payPopOptions.failTxt || '支付失败',
    //默认参数,无法改变
    //键盘数字(1~9)
    keyBoards: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
    //键入的值
    val: [],
    //默认输入框与等待层是否显示
    status: true
   }
  },
  methods: {
   val2input(item) {
    this.val.push(item)
    if (this.val.length == this.pwdLength) {
     //打开等待层
     this.status = false
     //输入完毕后将值传递给父组件
     this.$emit('inputDown', this.val.join(''))
     //清空数据
     this.val = []
    }
   },
   delVal () {
    if (this.val.length > 0) this.val.pop()
   },
   closePay () {
    this.payPopOptions.isShow = false;
   },
   $payStatus(flag = false) {
    const that = this
    //模拟等候feel
    setTimeout(() => {
     if (flag) {
      //成功
      this.loadingTxt = this.successTxt
      //关闭输入层,重置等待语
      setTimeout(function() {
       that.payPopOptions.isShow = !flag
       that.status = true
       that.loadingTxt = that.payPopOptions.loadingTxt || '请稍候...'
      }, this.resultTime)
     } else {
      //失败
      this.loadingTxt = this.failTxt
      //重新打开输入层,重置等待语
      setTimeout(function() {
       that.status = true
       that.loadingTxt = that.payPopOptions.loadingTxt || '请稍候...'
      }, this.resultTime)
     }
    }, this.loadingTime)
   }
  }
 }
로그인 후 복사

기본 소스코드는 여기에 있습니다. 구현 방법은 비교적 간단하므로 여기서는 소개하지 않겠습니다...

3.

로컬 app.vue에서 먼저 시도해 보겠습니다. payPopOptions의 isShow가 필수 항목인

<p id="app">
  <p @click="showPayPop">点击弹出支付框</p>
  <vue-pay-pop ref="pay" :payPopOptions="payPopOptions" @inputDown="inputDown"></vue-pay-pop>
 </p>
로그인 후 복사
rrree를 사용하여 팝업 상자 표시 및 숨기기를 제어하는 ​​데 사용됩니다.

다른 매개 변수는 선택적 매개 변수입니다

4. 구성 파일을 변경하세요

좋아요. 이제 릴리스를 준비하기 위해 구성 파일을 변경해 보겠습니다.

index.js

import vuePayPop from './lib/vue-pay-pop'
export default {
 name: 'app',
 data () {
  return {
   payPopOptions: {
    isShow: false
   },
  }
 },
 components: {
  vuePayPop
 },
 methods: {
  inputDown(val) {
   //模拟检查数据
   setTimeout(() => {
    if (val == '111111') {
     this.$refs.pay.$payStatus(true)
    } else {
     this.$refs.pay.$payStatus(false)
    }
   }, 1000)
  },
  showPayPop() {
   this.payPopOptions.isShow = true;
  }
 }
}
로그인 후 복사
package.json

1을 가리키는 화살표를 수정하세요. . 플러그인 버전 번호는

uploadnpm마다 모두 변경해야 합니다

2. false로 설정하지 않으면 게시할 수 없습니다

3. Github에 코드를 업로드하는 방법에 대해 이야기하려면 Git 튜토리얼을 참조하세요---Liao Xuefeng)

webpack.config .js

항목 및 파일 이름

index.html

import vuePayPop from './vue-pay-pop.vue'
const PayPop = {
  install(Vue, options) {
    Vue.component(vuePayPop.name, vuePayPop)
  }
}
if (typeof window !== 'undefined' && window.Vue) {
  window.PayPop = PayPop
  Vue.use(PayPop)
}
export default PayPop
로그인 후 복사
dist 파일을 수정하세요. . 명령줄에 npm run build를 입력하면 사용자 정의됩니다. 5. npm을 게시하려면

npm 공식 웹사이트로 이동해야 합니다. npm 계정을 등록하세요등록 후

사용자 이름과 비밀번호를 입력하세요. , 이메일(비밀번호는 표시되지 않습니다)

성공적으로 로그인한 후

ok를 입력하면 성공적으로 게시됩니다!

6. 참조

프로젝트에서 npm install vue-pay-pop --save 패키지를 다운로드하여 main.js

<p id="app"></p>
<script src="/dist/vue-pay-pop.js"></script>
로그인 후 복사

vue 파일에서 직접 참조할 수 있도록 ..

ok. , 그러면 우리의 콘텐츠는 여기서 끝납니다.

또한, 도움이 되셨다면 github에 별표를 남겨주셔도 좋습니다. 물론 댓글이나 이슈를 통해 질문이나 제안을 하셔도 좋습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

JS로 접기 및 펼치기 애니메이션 만들기(코드 포함)

JS는 투명도 그라디언트 기능을 구현합니다

위 내용은 npm을 사용하여 vue2.0+ 플러그인을 게시하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿