国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue translate peoject實現在線翻譯功能【新手必看】

來源:懂視網 責編:小采 時間:2020-11-27 22:13:33
文檔

vue translate peoject實現在線翻譯功能【新手必看】

vue translate peoject實現在線翻譯功能【新手必看】: 開始 這是一適合新手練習的小項目,一個在線翻譯的demo。 在正式開始前,先啰嗦一下,是一位網友給我的建議,就是不要強行組件化的問題 開始做Vue時我們可能會喜歡拆很多組件出來 但記住組件是為了復用(常見如公共菜單按鈕欄等) 如非能夠復用的情況其實并
推薦度:
導讀vue translate peoject實現在線翻譯功能【新手必看】: 開始 這是一適合新手練習的小項目,一個在線翻譯的demo。 在正式開始前,先啰嗦一下,是一位網友給我的建議,就是不要強行組件化的問題 開始做Vue時我們可能會喜歡拆很多組件出來 但記住組件是為了復用(常見如公共菜單按鈕欄等) 如非能夠復用的情況其實并

 開始

這是一適合新手練習的小項目,一個在線翻譯的demo。

在正式開始前,先啰嗦一下,是一位網友給我的建議,就是不要強行組件化的問題 開始做Vue時我們可能會喜歡拆很多組件出來 但記住組件是為了復用(常見如公共菜單按鈕欄等) 如非能夠復用的情況其實并不用真的拆出組件來 。

當然,這個項目里因為是練手,所以強行組件化來涉及更多的vue用法。

目錄結構

src下新建了兩個文件:TranslateForm.vue表單組件和TranslateText.vue翻譯結果組件

涉及的語法

  • 指令:v-model,v-on,v-bind
  • 父子組件通信:$emit,props
  • 動態更新數據:vm.$set
  • 翻譯服務的API,我這里用的是有道翻譯的api
  • ——————————————————————————————分割線————————————————————————

    TranslateForm.vue
    <template>
     <div>
     <!--加上頁面修飾符,提交時就不回再重載頁面-->
     <form v-on:submit.prevent="formSubmit">
     <input type="text" v-model="text" placeholder="輸入需要翻譯的內容"/>
     <select v-model="to">
     <option value ="en">英文</option>
     <option value ="ko">韓文</option>
     <option value ="fr">法文</option>
     <option value ="ru">俄文</option>
     </select>
     <input type="submit" value="翻譯"/>
     </form>
     </div>
    </template>
    <script>
    export default {
     name: 'TranslateForm',
     data: function () {
     return {
     text: '',
     to: 'en'
     }
     },
     methods: {
     formSubmit: function () {
     this.$emit('formSubmit', this.text, this.to)
     }
     }
    }
    </script>
    <style></style>

    這里沒啥好說的,text和to兩個變量分別是要翻譯的文字和翻譯語言的選項,this.$emit把數據傳給父組件使用

    根組件APP

    <template>
     <div id="app">
     <h2>簡單翻譯</h2><span>簡單/易用/便捷</span>
     <TranslateForm v-on:formSubmit="textTranslate"></TranslateForm>
     <TranslateText :translated-text="translatedText"></TranslateText>
     </div>
    </template>
    <script>
    import TranslateForm from './components/TranslateForm.vue'
    import TranslateText from './components/TranslateText.vue'
    import md5 from 'blueimp-md5'
    import $ from 'jquery'
    
    export default {
     name: 'App',
     data: function () {
     return {
     translatedText: '2',
     appKey: '47bb6e424790df89',
     key: 'NH2VxBadIlKlT2b2qjxaSu221dSC78Ew',
     salt: (new Date()).getTime(),
     from: '',
     to: 'en'
     }
     },
     components: {
     TranslateForm, TranslateText
     },
     methods: {
     textTranslate: function (text, to) {
     let vm = this
     $.ajax({
     url: 'http://openapi.youdao.com/api',
     type: 'post',
     dataType: 'jsonp',
     data: {
     q: text,
     appKey: this.appKey,
     salt: this.salt,
     from: this.from,
     to: to,
     sign: md5(this.appKey + text + this.salt + this.key)
     },
     success: function (data) {
     vm.$set(vm.$data, 'translatedText', data.translation[0])
     }
     })
     }
     }
    }
    </script>
    <style>
     #app {
     font-family: 'Avenir', Helvetica, Arial, sans-serif;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
     text-align: center;
     color: #2c3e50;
     margin-top: 60px;
     }
    </style>

    1、父組件拿到子組件傳來的數據后開始通過api來請求數據
    2、我用的是有道api http://ai.youdao.com/login.s api文檔里對于api的使用已經很詳細了,我在這里是第一次使用api,沒覺得難
    3、需要自己安裝兩個依賴:一個是jquery由于ajax請求api,一個是blueimp-md5在請求api時會用到里面的md5()
    4、用vue.set將得到的結果綁定到translatedText這個變量,在這一步的時候我踩了兩個坑

    第一個坑:習慣了以前的寫法,直接就這樣給變量賦值,結果變量的值并未改變,這時我還不知到有Vue.set這個語法,后面百度才知道的(不認真看文檔的下場)

     success: function (data) {
     this.translatedText = data.translation[0]
     console.log(this.translatedText)
     }

    第二個坑:照著文檔來寫,然后報錯了:this.$set is not a function,這里報錯是因為success這個函數里的this指向的不是當前的VueModel     

    success: function (data) {
     this.$set(this.$data, 'translatedText', data.translation[0])
     }

    所以我在前面定義了一個vm變量來充當當前Model,然后就不報錯了。

    TranslateText.vue
    <template>
     <div id="TranslateText">
     <p>{{translatedText}}</p>
     </div>
    </template>
    <script>
    export default {
     name: 'TranslateText',
     props: [
     'translatedText'
     ]
    }
    </script>
    <style></style>

    props接收父組件傳值來使用

    最后

    這個文章我自己看了一下,寫的確實不好,許多地方不通順,希望大家多多包涵

    代碼我上傳到github了 https://github.com/Zone-F/vue... (沒加樣式)

    以上所述是小編給大家介紹的vue translate peoject實現在線翻譯功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    vue translate peoject實現在線翻譯功能【新手必看】

    vue translate peoject實現在線翻譯功能【新手必看】: 開始 這是一適合新手練習的小項目,一個在線翻譯的demo。 在正式開始前,先啰嗦一下,是一位網友給我的建議,就是不要強行組件化的問題 開始做Vue時我們可能會喜歡拆很多組件出來 但記住組件是為了復用(常見如公共菜單按鈕欄等) 如非能夠復用的情況其實并
    推薦度:
    標簽: VUE 新手 在線翻譯
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 美日韩一区二区三区 | 欧美αv日韩αv另类综合 | 亚洲一区 中文字幕 久久 | 中文字幕一区二区在线观看 | 国产视频一区二区在线播放 | 国产日韩欧美一区二区 | 亚洲欧美日韩三级 | 日本一区二区三区高清在线观看 | 日韩亚洲欧美在线爱色 | 免费网站看v片在线成人国产系列 | 国内精品一区二区三区最新 | 亚洲综合视频 | 国产手机视频在线观看 | 亚洲va欧美va天堂v国产综合 | 国产精品成久久久久三级 | 国产日韩欧美91 | 一级黄免费 | 国产日韩一区二区三区在线播放 | 91欧美一区二区三区综合在线 | 国产在线观看一区二区三区 | 日韩中文字幕a | 一级毛片免费观看久 | 欧日韩一区二区三区 | 欧美精品一区二区三区久久 | 亚洲第一页在线观看 | 欧美日韩色 | 青青草原国产一区二区 | 国产精品免费网站 | 欧美亚洲综合另类在线观看 | 国产欧美日韩在线播放 | 欧美日韩亚洲一区二区三区 | 欧美另类图片亚洲偷 | 精品一区二区三区在线成人 | 亚洲成a人一区二区三区 | 99精品国产成人一区二区 | 99久久久国产精品免费 | 免费看日产一区二区三区 | 亚洲精品日韩中文字幕久久久 | 日韩小视频在线观看 | 欧美福利专区 | 日韩欧美91|