網(wǎng)上有很多關(guān)于安卓pos機(jī)瀏覽器,editor瀏覽器中的網(wǎng)頁代碼編輯器在項(xiàng)目中集成的知識(shí),也有很多人為大家解答關(guān)于安卓pos機(jī)瀏覽器的問題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
2、紅米手機(jī)如何設(shè)置新支付手機(jī)pos機(jī)?
安卓pos機(jī)瀏覽器
瀏覽器中的編輯器
我們已經(jīng)習(xí)慣了使用編輯器來編寫代碼,作為一名程序員無論選擇什么編輯器來開發(fā),都是為了提高我們的工作效率,以及擼代碼爽的程度。
作為一名前端開發(fā)人員,有時(shí)候難免會(huì)遇到需要在瀏覽器中書寫代碼的場景。無論是用戶需要還是我們自己為了開發(fā)便利,這都將是有益的。
在網(wǎng)頁中編輯很容易,但是能不能讓我們像在本地編輯器中那樣編寫代碼,提供豐富的功能呢?目前有很多個(gè)開源項(xiàng)目針對此問題實(shí)現(xiàn)了各自的一套解決方案。在此就以monaco-editor集成到vue項(xiàng)目中為例,為大家解決此類問題,以及期望能夠幫助大家快速入手實(shí)踐。
如上圖所示:這是在網(wǎng)頁中編輯代碼的效果,沒錯(cuò),這不是在vscode中,就是瀏覽器中的頁面上。不但提供了代碼高亮、代碼提示、代碼補(bǔ)全、搜索、替換等功能,還有右鍵格式化等其他功能,以及命令面板的功能等??梢哉f是能力豐富、功能強(qiáng)大。下面就逐步說明從開始到應(yīng)用的集成步驟。
一、安裝我一共用到了五個(gè)npm包:
npm install monaco-editor -Snpm install monaco-editor-nls -Snpm install monaco-editor-webpack-plugin -Dnpm install monaco-editor-esm-webpack-plugin -Dnpm install js-beautify -S
下面來對這五個(gè)包做一下簡要的說明:
monaco-editor:是網(wǎng)頁編輯器的核心包,整體非常大,因?yàn)橹С至撕芏嗟恼Z言與很多的擴(kuò)展功能。
monaco-editor-webpack-plugin:因?yàn)閙onaco-editor直接單獨(dú)引入的情況下所支持的基本使用不能滿足我們的需求,我們還需要支持智能提示等功能,所以需要額外單獨(dú)做一些配置操作,雖然官網(wǎng)文檔說明已經(jīng)很清晰,但是配置起來還是不免比較繁瑣,因此提供了這個(gè)webpack插件來幫助我們自動(dòng)處理這些事情,簡化我們的操作。
monaco-editor-nls:是對整個(gè)編輯器的漢化處理,如果需要進(jìn)行漢化,那么需要安裝此包。
monaco-editor-esm-webpack-plugin:針對漢化包所做的webpack插件,需要和漢化包配合使用。
js-beautify:是用來做代碼美化的,主要是做一些格式化的工作。
安裝完成之后,就可以配置到我們的項(xiàng)目中進(jìn)行應(yīng)用啦。
二、配置vue.config.js:首先要在這個(gè)文件中引入插件,并設(shè)置相應(yīng)的配置項(xiàng)。
vue.config.js配置
首先將插件引入進(jìn)來。
const MonacoWebpackPlugin = require('monaco-editor-esm-webpack-plugin')
然后設(shè)置對應(yīng)的屬性。
module: { rules: [ { test: /\\.js/, enforce: 'pre', include: /node_modules[\\\\\\/]monaco-editor[\\\\\\/]esm/, use: MonacoWebpackPlugin.loader } ]},plugins: [ new MonacoWebpackPlugin({ languages: ['javascript', 'typescript', 'html', 'css', 'json'] })]
其中l(wèi)anguages指定要支持的語言,因?yàn)橥暾嬷С值恼Z言非常多,如果使用默認(rèn)的配置,那么包會(huì)非常的大,因此只選擇我們需要的語言。其中javascript和typescript必須同時(shí)出現(xiàn)。根據(jù)官網(wǎng)的說法是:由于是使用web worker的方式進(jìn)行實(shí)現(xiàn)的,每個(gè)web worker負(fù)責(zé)的工作內(nèi)容不同,某些語言可能會(huì)共用同一個(gè)webwork,但是有一些語言需要額外引入其他語言的支持來負(fù)責(zé)實(shí)例化該語言的共享工作進(jìn)程。如下:
需要額外的語言支持的部分語言
即:要引入language語言,必須引入instantiator。
另外還有一個(gè)跟languages同級(jí)的features屬性來精確的配置要使用的特性。這里默認(rèn)使用全部。
項(xiàng)目vue文件:在自己的項(xiàng)目vue文件中,引入monaco-editro及其他相關(guān)項(xiàng)。
const beautify = require('js-beautify')import { setLocaleData } from 'monaco-editor-nls'import zh_CN from 'monaco-editor-nls/locale/zh-hans'setLocaleData(zh_CN)// import * as monaco from 'monaco-editor'const monaco = require('monaco-editor')const beautify_js = beautify.jsconst beautify_css = beautify.cssconst beautify_html = beautify.html
其中:
const beautify = require('js-beautify')
引入美化代碼工具,可分別對js、css、html代碼進(jìn)行格式化。
import { setLocaleData } from 'monaco-editor-nls'
import zh_CN from 'monaco-editor-nls/locale/zh-hans'
setLocaleData(zh_CN)
完成monaco-editor的漢化操作。
const monaco = require('monaco-editor')
引入編輯器核心包,注意:如果引入了漢化包,那么必須要用require的形式引入該項(xiàng),否則可以使用import的形式。而且必須要在漢化完成之后再引入,不然漢化將不生效。
<template> <div class="monaco-editor" id="monaco-editor"> </div></template>
在template中設(shè)定編輯器元素,作為根元素來渲染整個(gè)編輯器,注意該元素不能有子元素存在。
editorBox = monaco.editor.create(document.getElementById("monaco-editor"), { value: "let a = 1;const b = 2", language: "javascript", theme: "vs-dark", tabSize: 2})
實(shí)例化編輯器,此時(shí)可以在頁面中進(jìn)行使用。第一個(gè)參數(shù)為要掛載的元素,第二個(gè)參數(shù)為配置選項(xiàng)。
value:編輯器的內(nèi)容。
language:編輯器的當(dāng)前實(shí)例所支持的語言。
theme:編輯器的主題樣式,支持vs、vs-dark、hc-black三種。
tabSize:表示縮進(jìn)的距離。
更多配置項(xiàng)可以查閱官網(wǎng)進(jìn)行設(shè)置。
到此為止我們就可以在網(wǎng)頁中編輯代碼啦!
三、高級(jí)功能右鍵:
editorBox.addAction({ id: 'formateCodeForce', label: '強(qiáng)制格式化', keybindings: [monaco.KeyMod.CtrlCmd|monaco.KeyMod.Alt|monaco.KeyCode.KeyF], contextMenuGroupId: '2_customCommand', run(ed, opt) { let a = editorBox.getValue() let b = beautify_js(a) // editorBox.setValue(b) editorBox.executeEdits("", [ { range: new monaco.Range(1, 1, editorBox.getModel().getLineCount() + 1, 1), text: b } ]) }})
可以在右鍵面板中增加自定義功能:
id:該選項(xiàng)的唯一標(biāo)識(shí)。
label:選項(xiàng)顯示的名稱。
keybindings:綁定的快捷鍵,多個(gè)快捷鍵用豎線分割。每個(gè)按鍵要使用monaco的內(nèi)置枚舉類型來設(shè)定。
contextMenuGroupId:選項(xiàng)所屬組的id,內(nèi)置了三個(gè)組id(navigation:該組是右鍵的第一欄,1_modification:修改組,9_cutcopypaste:剪切復(fù)制粘貼組)。
run:選擇該選項(xiàng)之后的回調(diào)函數(shù),第一個(gè)參數(shù)為editorBox實(shí)例,第二個(gè)參數(shù)為一個(gè)剩余參數(shù)的數(shù)組,注意如果通過快捷鍵觸發(fā)那么第二個(gè)參數(shù)不存在。因?yàn)槲覍?shí)現(xiàn)了一個(gè)格式化代碼的功能,所以我在run函數(shù)中主要進(jìn)行了三步操作:
1.使用getValue獲取編輯器內(nèi)容,這里有一個(gè)注意的點(diǎn),如果實(shí)例化的編輯器是用vue中的data里面定義的數(shù)據(jù)接收的,由于vue的響應(yīng)式更新,會(huì)造成死循環(huán)而無法獲取導(dǎo)致頁面卡死,可以用三個(gè)方法解決,根據(jù)不同的情況選擇不同的方式,第一如果是用this.editorBox接收的,那么editorBox不要寫在data里面,這樣就不會(huì)做數(shù)據(jù)追蹤,第二可以使用非vue實(shí)例化的屬性。第三可以用toRaw來獲取原始數(shù)據(jù),也可以解決。
2.使用beautify_js對代碼進(jìn)行格式化。
3.將格式化后的代碼重新回寫到編輯器中,這里有兩種方式setValue和executeEdits。區(qū)別是setValue不能撤銷回上一步,而executeEdits可以。其中range表示選擇的范圍,我這里從第一行第一列一直到最后一行的下一行的第一列,相當(dāng)于是全部文檔,然后用text的值,也就是格式化后的代碼來進(jìn)行替換。
右鍵面板
自定義補(bǔ)全:
monaco.languages.registerCompletionItemProvider('javascript', { provideCompletionItems(model, pos) { return { suggestions: [ { label: "row-col", insertText: beautify_js(`[{"cols":[{"span":6},{"span":6}]}]`), kind: monaco.languages.CompletionItemKind["Snippet"], detail: "插入行列", }, { label: "for-full", insertText: beautify_js(`for (let i = 0; i < len; i++) {}`), kind: monaco.languages.CompletionItemKind["Snippet"], detail: "完整for循環(huán)", } ], dispose() { const line = pos.lineNumber const column = pos.column if(model.getValueInRange(new monaco.Range(line, column - 1, line, column)) !== "/") { return } editorBox.executeEdits("", [ { range: new monaco.Range(line, column - 1, line, column), text: null } ]) } } }, triggerCharacters: ['/']})
triggerCharacters表示觸發(fā)補(bǔ)全操作的快捷鍵,編輯器會(huì)提示出suggestions中設(shè)置的內(nèi)容。注意回車之后輸入的快捷鍵仍然是存在的。
suggestions中的label表示提示的名稱,insertText表示回車之后輸入的內(nèi)容,kind用來設(shè)定提示片段的類型,即最前面的圖標(biāo)標(biāo)識(shí),detail是提示的說明,位于提示行的末尾。
效果如下圖所示:
補(bǔ)全提示
由于使用triggerCharacters設(shè)定的快捷鍵輸入,回車之后該快捷鍵依然存在,對于此場景來說相當(dāng)于多余的字符,所以我做了一下處理,在回車之后將"/"刪除掉,dispose回調(diào)函數(shù)就是用來做這個(gè)事情的。由于其他正常提示的情況下是不需要?jiǎng)h除符號(hào)的,因此做了一下判斷。
(提示:自定義的補(bǔ)全提示功能,除了使用triggerCharacters定義的快捷鍵會(huì)觸發(fā)定義的一組提示,輸入label中的首個(gè)字符,也會(huì)觸發(fā)相應(yīng)提示,這種情況不會(huì)產(chǎn)生多余的字符)
差異對比:
let curModel = monaco.editor.createModel("let a = 1\let c = 3\let n = 2", "text/plain")let oldModel = monaco.editor.createModel("let a = 1\let n = 2", "text/plain")let diffEditor = monaco.editor.createDiffEditor(document.getElementById("monaco-editor"), { theme: "vs-dark"})diffEditor.setModel({ original: oldModel, modified: curModel})
通過創(chuàng)建兩個(gè)不同的model來對比代碼的變化
代碼差異對比
注意事項(xiàng):由于版本的不同可能會(huì)導(dǎo)致無法使用的問題。
對于較低版本vue-cli創(chuàng)建的項(xiàng)目,默認(rèn)使用webpack4,那么對于最新的monaco-editor,則會(huì)出現(xiàn)問題,最大的支持版本為0.30.1,其他包的版本也需要相應(yīng)調(diào)整。
對于高版本vue-cli創(chuàng)建的項(xiàng)目,默認(rèn)使用webpack5,或者使用vite創(chuàng)建的項(xiàng)目是可以支持最新的monaco-editor版本的。
對于版本的支持,做如下標(biāo)示:
較低版本monaco-editor@0.30.1monaco-editor-webpack-plugin@6.0.0monaco-editor-nls@2.0.0
較高版本monaco-editor@0.32.0 //或更新monaco-editor-webpack-plugin //已經(jīng)與monaco-editor統(tǒng)一管理,最新版本即可monaco-editor-nls@3.0.0 //或更新總的來說
monaco-editor支持的功能非常豐富,幾乎包含了vscode所有的基礎(chǔ)功能,大家可以在此基礎(chǔ)上自由發(fā)揮,實(shí)現(xiàn)更多有用的功能。希望能為各位開發(fā)者們略盡我的綿薄之力,更好的幫助大家完成工作需要。
紅米手機(jī)如何設(shè)置新支付手機(jī)pos機(jī)?
操作流程
1.手機(jī)卡
?。?)用戶的手機(jī)卡必須開通上網(wǎng)功能(提示:因上網(wǎng)流量費(fèi)自付,建議辦理包月上網(wǎng)套餐。定制最基礎(chǔ)的上網(wǎng)套餐就夠用。友情提示:別用手機(jī)的流量看視頻、下載大的軟件,費(fèi)用較高)。
手機(jī)須開啟上網(wǎng)數(shù)據(jù)連接。步驟:菜單鍵→設(shè)置→SIM卡管理→數(shù)據(jù)連接→選擇中國移動(dòng)?或中國聯(lián)通?或中國電信?點(diǎn)擊選擇。或點(diǎn)擊自動(dòng)選擇。
(2)或者使用WIFI連接,手機(jī)無線網(wǎng)絡(luò)步驟:菜單鍵→設(shè)置→無線和網(wǎng)絡(luò)→WLAN勾選→WLAN設(shè)置→WLAN網(wǎng)絡(luò)?如附近有無線網(wǎng)絡(luò),WLAN網(wǎng)絡(luò)下方就有可用的無線網(wǎng)絡(luò),單擊連接輸入密碼,連接成功后手機(jī)屏幕上方就出現(xiàn)扇形的圖標(biāo),白色代表信號(hào)強(qiáng)弱。此連接一般在有無線路由的家中、單位、休閑場所、酒店等有無線網(wǎng)絡(luò)服務(wù)的地方。
2.新版本升級(jí)在操作功能的時(shí)候,如有提示新版本升級(jí),請升級(jí)。步驟:提示發(fā)現(xiàn)新版本→點(diǎn)確定→彈出兩個(gè)瀏覽器選擇第一個(gè)瀏覽器進(jìn)入→自動(dòng)下載新版本→下載完成單擊下載文件→彈出替換應(yīng)用程序→點(diǎn)確定→點(diǎn)安裝→點(diǎn)打開。
3.刷卡方式:刷卡方法用卡磁條面對著刷卡器厚的一面從一側(cè)均勻刷過。如刷卡不成功請改變刷卡速度和平穩(wěn)度。
以上就是關(guān)于安卓pos機(jī)瀏覽器,editor瀏覽器中的網(wǎng)頁代碼編輯器在項(xiàng)目中集成的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于安卓pos機(jī)瀏覽器的知識(shí),希望能夠幫助到大家!
