導航:首頁 > 源碼編譯 > Vue頁面編譯工具

Vue頁面編譯工具

發布時間:2023-09-10 01:52:47

㈠ VUE中如何動態編譯js

需求:動態獲取一段字元串類型的js腳本,動態編譯它並且可以敏叢完美在vue中運行與之交互。
實現:動態編譯js的方式有飢橘eval和new function
簡單例子:

eval:

new function:

顯然後者更利於擴展,詳細了解區別可以參考鏈接內容:爛拿團
https://www.hu.com/question/29743491
https://imys.net/20151222/eval-with-new-function.html

要注意使用new Function,在vue環境中直接賦值的方式函數作用域與賦值vue結構對象不同: https://jsfiddle.net/5neLzn1x/

㈡ 程序猿專用十大在線編譯器(IDE)整理

1. CodeSandbox(基於 React 的在線代碼沙盒平台) 我常用的

① 主流的腳手架都支持,比如在線create-react-app,vue-cli等(在線 fork 修改),支持 github 登錄(項目導入),也支持 cli 上傳例子,例子可以在線訪問和下載,當然也支持內嵌到其他博客等網頁中。

② 地址:https://codesandbox.io/

③ 圖示

2. CodePen(前端代碼編輯運行的網站)

① CodePen 是一個完全免費的前端代碼託管服務,主要功能有:

② 地址:https://codepen.io/

③ 圖示

3. JSRUN(支持手機端的在線JS編輯器)

① jsrun是一款支持手機端的在線JS編輯器, HTML/CSS/javascript在線代碼運行工具,js代碼在線測試調試,是runjs的升級版支持vue.js/angular.js的在線編輯器

② 地址:http://jsrun.net/

③ 圖示

4. jsFiddle(前端代碼編輯運行的網站)

① jsFiddle 是一個Web開發人員的練習場,可在線編輯和測試 HTML、CSS、JavaScript代碼片段。在 jsFiddle 編輯的代碼,可以保存,也可分享給其他人,還可嵌入到其他網頁

② 地址:https://jsfiddle.net/

③ 圖示

5. Ideone(C和C++的在線編譯和調試工具,支持其他的60種語言) 我常用

① Ideone是C和C++的在線編譯和調試工具,支持其他的60種語言。這個工具提供許多強大的功能,允許程序員快速高效的編譯源代碼

② 地址:https://www.ideone.com/

③ 圖示

6. Codechef(C,C ++和Java的在線編譯工具)

① 它支持C,C ++和Java,非常接近真正的桌面IDE。這是超快速和易於使用。適合於課堂和作業的學生,練習面試問題。

② 地址:https://www.codechef.com/ide

③ 圖示

7. JDoodle (C,C ++和Java的在線IDE)

① 支持協作代碼。它只是從一個簡單的文本區域開始,您可以粘貼代碼,然後單擊運行。您可以更改命令行參數並在運行該程序之前設置stdin。最適合新的在線編輯器不支持的許多舊語言。

② 地址:https://www.codechef.com/ide

③ 圖示

8. OnlineGDB (在線C,C ++,Java,PHP編譯器) 我常用

① 它支持C,C ++,PHP和Java編譯器。OnlineGDB的獨特功能是,您可以逐步調試您的代碼。一旦代碼被寫入,它可以很容易地格式化,使其看起來不錯。

② 地址:https://www.onlinegdb.com/

③ 圖示

9. GCC資源管理器

① GCC編譯器資源管理器是一個互動式在線編譯器,它顯示編譯後的C++、RISE、GO(以及更多)代碼的匯編輸出。

② 地址:https://gcc.godbolt.org/

③ 圖示

10. plnkr edit在線編輯器

① js的在線編輯器。

② 地址:http://plnkr.co/edit/

③ 圖示

㈢ weex最新版如何將.vue編譯成.js文件

1.在components 目錄下新建一個validate.js:
export default{
install(Vue){
Vue.prototype.$myName = "zhagngsan";
}
}
這就是我們的插件,定義了一個屬性
2.入口文件jssrc/index.js 加入:
// 引入
import validate from "./../components/validate";
// 使用
Vue.use(validate);
3.我們到user-username.vue 組件下驗證一下:
mounted(){
alert(this.$myName);
},
瀏覽器訪問登錄頁面,成功彈出:
這里寫圖片描述
4.剛剛我們已經學會插件里定義屬性,馬上來學一下如何定義方法:
export default{
install(Vue){
// Vue.prototype.$myName = "zhagngsan";
Vue.prototype.checkUserName = (value) => {
if(/\w{6,20}/.test(value)){
return true;
}else{
return false;
}
}
}
}
同樣可以使用該方法:
if(this.checkUserName("hello")){
alert("ok");
}else{
alert("error");
}
5.
這里寫圖片描述
我們修改user-name.vue 組件,來實現文本框驗證:
<template>
<div class="form-group">
<label class="col-sm-2 control-label">用戶名</label>
<div class="col-sm-10">
<input type="text" v-model="username" v-on:change="userNameChange" class="form-control" :placeholder="username">
<label class="label label-danger" v-if="showErrorLabel">用戶不合法</label>
</div>
</div>
</template>
<script>
export default{
props:["placeholder"],
data:function () {
return {
username:"",
showErrorLabel:false,
}
},
methods:{
userNameChange(){
// 用戶名改變的方法里判斷 用戶名是否復合要求
if(this.checkUserName(this.username)){
this.showErrorLabel = false; // 如果驗證沒有通過就顯示錯誤提示
}else{
this.showErrorLabel = true;
}
// 調用父組件的方法
this.$emit("childChange","username",this.username)
}
}
}
</script>
這里寫圖片描述
自定義指令
文檔:
1、validate.js:
export default{
install(Vue){
// Vue.prototype.$myName = "zhagngsan";
Vue.prototype.checkUserName = (value) => {
if(value == ""){
return true; // 如果沒有填寫,默認為true
}
if(/\w{6,20}/.test(value)){
return true;
}else{
return false;
}
}
Vue.directive("uname",{
bind(){
console.log("bind"); // 只會調用一次
},
update(el,binding,vnode){
console.log(el);
console.log(binding);
console.log(vnode);
},
})
}
}
2、我們自定了一個uname 指令,下面來看一下如何使用的?
<input type="text" v-uname="username" v-model="username" v-on:change="userNameChange" class="form-control" :placeholder="username">
我們在組件的模板里使用了 v-uname ,並且給綁定了」username」數據。
我們打開瀏覽器的控制台:
這里寫圖片描述
說明我們定義的指令里,這個方法執行了:
bind(){
console.log("bind"); // 只會調用一次
},
3、下面我們來看一下update 里的東東
update(el,binding,vnode){
console.log(el);
console.log(binding);
console.log(vnode);
}

㈣ weex最新版如何將.vue編譯成.js文件

1.components 目錄新建validate.js:
export default{
install(Vue){
Vue.prototype.$myName = "zhagngsan";
}
}
我插件定義屬性
2.入口文件jssrc/index.js 加入:
// 引入
import validate from "./../components/validate";
// 使用
Vue.use(validate);
3.我user-username.vue 組件驗證:
mounted(){
alert(this.$myName);
},
瀏覽器訪問登錄頁面功彈:
寫圖片描述
4.剛剛我已經插件定義屬性馬何定義:
export default{
install(Vue){
// Vue.prototype.$myName = "zhagngsan";
Vue.prototype.checkUserName = (value) => {
if(/\w{6,20}/.test(value)){
return true;
}else{
return false;
}
}
}
}
同使用該:
if(this.checkUserName("hello")){
alert("ok");
}else{
alert("error");
}
5.
寫圖片描述
我修改user-name.vue 組件實現文本框驗證:


用戶名


用戶合
寫圖片描述
自定義指令
文檔:
1、validate.js:
export default{
install(Vue){
// Vue.prototype.$myName = "zhagngsan";
Vue.prototype.checkUserName = (value) => {
if(value == ""){
return true; // 沒填寫,默認true
}
if(/\w{6,20}/.test(value)){
return true;
}else{
return false;
}
}
Vue.directive("uname",{
bind(){
console.log("bind"); // 調用
},
update(el,binding,vnode){
console.log(el);
console.log(binding);
console.log(vnode);
},
})
}
}
2、我自定uname 指令面看何使用

我組件模板使用 v-uname 並且給綁定username數據
我打瀏覽器控制台:
寫圖片描述
說明我定義指令執行:
bind(){
console.log("bind"); // 調用
},
3、面我看update 東東
update(el,binding,vnode){
console.log(el);
console.log(binding);
console.log(vnode);
}

㈤ 如何優雅地使用 VSCode 來編輯 vue 文件

先來扒一扒使用 PHPStorm 遇到的問題:
vue文件雖然可以通過插件來解決高亮問題,但是 <script> 標簽中的 ES6 代碼的識別老是出問題,箭頭函數有的時候能正確識別,有的時候會報錯
無法正確識別 vue 文件中的 jsx 語法
無法正確識別和高亮 vue 文件 <style> 標簽中使用的 less 語法
vue文件中 <template> 部分使用了大量的自定義標簽(自定義組件)和自定義屬性,會報一堆 warning
經常性卡死
webpack實時編譯的錯誤不能直接展示在代碼編輯器內,還得自己到控制台中查看
如何安裝 vscode
很簡單,傳送門: 官網下載安裝
第一步,要支持 vue 文件的基本語法高亮
這里,我試過好3個插件: vue , VueHelper 和 vetur ,最終選擇使用 vetur 。
安裝插件: Ctrl + P 然後輸入 ext install vetur 然後回車點安裝即可。
p.s: vscode 的插件安裝比 PHPStorm 的插件安裝更快捷方便,安裝完成後還不用重啟整個程序,只要重新載入下工作區窗口就可以了。
安裝完 vetur 後還需要加上這樣一段配置下:
"emmet.syntaxProfiles": {
"vue-html": "html",
"vue": "html"
}
這時可以打開一個vue文件試試,注意下右下角狀態欄是否正確識別為 vue 類型:
如果被識別為 text 或 html ,則記得要點擊切換下。
第二步,要支持 vue 文件的 ESLint
可能還有人會問為什麼要 ESLint ?沒有 lint 的代碼雖然也可能可以正確運行,但是 lint 作為編譯前的一道檢測成本更小,而且更快。此外, ESLint 還有很多規范是幫助我們寫出更加優雅而不容易出錯的代碼的。
jshint 本來也是個不錯的選擇,但是 ESLint 對 jsx 的支持讓我還是選擇了 ESLint.
安裝插件: Ctrl + P 然後輸入 ext install eslint 然後回車點安裝即可。
ESLint 不是安裝後就可以用的,還需要一些環境和配置:
首先,需要全局的 ESLint , 如果沒有安裝可以使用 npm install -g eslint 來安裝。
其次,vue文件是類 HTML 的文件,為了支持對 vue 文件的 ESLint ,需要 eslint-plugin-html 這個插件。可以使用 npm install -g eslint-plugin-html 來安裝
接著,安裝了 HTML 插件後,還需要在 vscode 中配置下 ESLint:
"eslint.validate": [
"javascript",
"javascriptreact",
"html",
"vue"
],
"eslint.options": {
"plugins": ["html"]
},
最後,別忘了在項目根目錄下創建 .eslintrc.json , 如果還沒創建,還可以使用下面快捷命令來創建:
這樣一來 vue 中寫的 js 代碼也能正確地被 lint 了。
要是不小心少個括弧之類的都可以有對應的報錯:
多餘 import 也都能報錯:
還是蠻智能的。
第三步,配置構建任務
vue 項目的構建我選擇用 webpack ,不過,並不是直接使用命令行下的 webpack 而是使用了 webpack 的 API 寫的 node 腳本。 腳本主要有兩個,一個是 build/bin/build.js 另一個是 build/bin/watch.js 分別是單次構建和實時構建。
於是乎,對應 vscode 中的 tasks 也是有兩個: build 和 watch ,簡單配置如下:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
// use `Ctrl+P` and type `task` + SPACE + <taskName> to run a task
"version": "0.1.0",
"tasks": [
{
"taskName": "build",
"echoCommand": true,
"command": "node",
"args": [
"build/bin/build.js"
],
"suppressTaskName": true,
"isBuildCommand": true
},
{
"taskName": "watch",
"echoCommand": true,
"command": "node",
"args": [
"build/bin/watch.js"
],
"suppressTaskName": true,
"isBackground": true
}
]
}
這樣配置好後,按 Ctrl + Shift + B 即可開始單次構建。 不過單次構建比較慢(要10秒+),一般我都用實時構建: Ctrl + P 然後輸入 task watch <回車> 即可開始實時構建。實時構建除了第一次比較慢,其他時候還是非常快的,一般1秒內就可以構建好。
最後,webpack 構建錯誤提示
webpack 構建失敗後一般都會有錯誤提示,會顯示在輸出窗口中:
為啥是彩色的? 因為裝了 Output Colorizer 這個插件。
當然,這樣還是不夠方便 -- 實時構建是後台運行的,「輸出」窗口一般也都是在後台,每次保存完文件還得點開豈不麻煩。
要是能做到像 ESLint 一樣直接把錯誤標到編輯器上面就好了。真的可以嗎?翻了下 vscode 的文檔,發現有神奇的 problemMatcher -- 可以對任務輸出進行解析,解析出的問題會顯示在「問題」窗口中,如果還有文件名行號和列號,則會在源代碼編輯窗口中對應的位置標出來。
先放個最終效果:
在這個文件的第32行,import 了一個不存在的模塊,這樣的錯誤在 ESLint 中當然是檢查不出來的,然而在 webpack 的實時構建中會報錯:
這個事情的困難在於兩點:
如何通過 problemMatcher 把這個錯誤給抓出來?
如何找到錯誤對應的行號?(如果可能的話,還有列號)
webpack的錯誤輸出格式並不是完全統一的,而且有些還沒有行號 -- 一方面可能是 webpack 的 bug ,另一方面 vue 文件在構建的時候會拆成 template, script 和 style 三個方面進行構建,報錯的行號可能對不上。
最終我的解決方案是對 webpack 的錯誤重新格式化輸出,然後匹配:
首先,重新格式化輸出需要 format-webpack-stats-errors-warnings 這個包(偶新寫的)
npm install --save-dev format-webpack-stats-errors-warnings
然後,到 build/bin/build.js 和 build/bin/watch.js 中在 webpack 構建完成的回調函數中增加這個格式化後的輸出:
更多使用介紹見 github
最後,在 .vscode/tasks.json 中,每個任務下添加 problemWatcher :
// ...
{
"taskName": "build",
// ...
// build 任務的:
"problemMatcher": {
"owner": "webpack",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^!>(\\w+): (\\S+)?:(\\d+),(\\d+)(?:~(?:(\\d+),)?(\\d+))?: (.*)$",
"severity": 1,
"file": 2,
"line": 3,
"column": 4,
"endLine": 5,
"endColumn": 6,
"message": 7
}
}
}
{
"taskName": "watch",
// ...
// watch 任務的:
"problemMatcher": {
"owner": "webpack",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^!>(\\w+): (\\S+)?:(\\d+),(\\d+)(?:~(?:(\\d+),)?(\\d+))?: (.*)$",
"severity": 1,
"file": 2,
"line": 3,
"column": 4,
"endLine": 5,
"endColumn": 6,
"message": 7
},
"watching": {
"activeOnStart": true,
"beginsPattern": "^\\s*Webpack begin run",
"endsPattern": "^\\s*Build complete at"
}
}
// ...
}
// ...
註:在 watch 任務中,為了匹配何時開始和何時結束,我在 webpack 構建的 run 和 watch 時增加了一個 console.log('Webpack begin run') 的列印,而在構建完成後增加了一個 console.log("Build complete at ..") 的列印。

閱讀全文

與Vue頁面編譯工具相關的資料

熱點內容
time庫中的clock函數python 瀏覽:987
cad視覺移動命令怎麼打開 瀏覽:819
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262
直流雙轉子壓縮機 瀏覽:952
pythonxmlstring 瀏覽:822
用私鑰加密之後可以用公鑰解密 瀏覽:788
ug如何啟動伺服器 瀏覽:444
csgo防抖動命令 瀏覽:960
如何弄到手機app頁面的源碼 瀏覽:441
androidwindows7破解版 瀏覽:363
解壓視頻動畫怎麼拍 瀏覽:748
連漲啟動源碼 瀏覽:163
小奔運動app網路異常怎麼回事 瀏覽:449