本人是第一次寫文章. node
首先用 VSCode 的朋友應該也會用到不一樣的 extensions. 但有一些是本身才會用的要如何作呢?
(這比較簡單, 相對以前 Visual Studio 的 plug-in 同 VSXI.)git
先決條件: node.js, vscode 1.22.2 (我用 1.22.1 都不成功)
要用到使用 Yeoman generatorgithub
在 vs code -> console (終端): npm install -g yo generator-codesql
安裝完後就能夠用 yo 指令去 Create code 了
創建個新的 Folder (e.g. mkdir exttest) -> cd exttest
輸入: yo codetypescript
再來就從 VS Code 打開 Folder
npm
我們要寫的就是在 src\extension.ts , yo code 這 command 會自動作出基本的 source. 在這我們能夠試下按 F5 去運行.json
另外一個 VSCode 自動打開
api
在 command panel 入 Hello Word
ide
在右下方返 Message Hello World!
工具
好了. 如下就是重點了. 我就以一個代碼生成工具的想法開始 ...
主要目的的是當我在 Editor 輸入我特定的字眼.
如 TBL=myTableName, CON=192.168.X.X,User,PWD,DBNAME, etc...
我就在 Server 的 API 返回我想要的 Result. 下面我做了簡單的Example
'use strict'; // The module 'vscode' contains the VS Code extensibility API // Import the module and reference it with the alias vscode in your code below import * as vscode from 'vscode'; // this method is called when your extension is activated // your extension is activated the very first time the command is executed export function activate(context: vscode.ExtensionContext) { // Use the console to output diagnostic information (console.log) and errors (console.error) // This line of code will only be executed once when your extension is activated console.log('Congratulations, your extension "myext" is now active!'); let editor: any; // The command has been defined in the package.json file // Now provide the implementation of the command with registerCommand // The commandId parameter must match the command field in package.json let disposable = vscode.commands.registerCommand('extension.mycode', () => { // The code you place here will be executed every time your command is executed //取得 active 的 editor editor = vscode.window.activeTextEditor; if (!editor) { return; // No open text editor } //取得 select 了的文字 <-- 這個重點, 就是用來用 Server 溝通的 let myselect = editor.selection; let text: string = editor.document.getText(myselect); const http = require('http'); http.get('http://192.168.0.44:88/prjAngularTSApi/api/angular/mytest?data=' + text , (resp:any) => { let data = ''; resp.on('data', (chunk:any) => { data += chunk; }); resp.on('end', () => { console.log(data); let tmp = JSON.parse(data); let s: vscode.SnippetString; s = new vscode.SnippetString(tmp); editor.insertSnippet(s); }); } ).on("error", (err:any) => { console.log("Error: " + err.message); }); // Display a message box to the user vscode.window.showInformationMessage('Hello World!'); }); context.subscriptions.push(disposable); } // this method is called when your extension is deactivated export function deactivate() { }
另外, 以上的Source 的 registerCommand 的名改了. 也要在 package.json 也改.
{ "name": "myext", "displayName": "myext", "description": "myext", "version": "0.0.1", "publisher": "lwljimmy", "engines": { "vscode": "^1.22.0" }, "categories": [ "Other" ], "activationEvents": [ "onCommand:extension.mycode" ], "main": "./out/extension", "contributes": { "commands": [ { "command": "extension.mycode", "title": "mycode" } ] }, "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "postinstall": "node ./node_modules/vscode/bin/install", "test": "npm run compile && node ./node_modules/vscode/bin/test" }, "devDependencies": { "typescript": "^2.6.1", "vscode": "^1.1.6", "tslint": "^5.8.0", "@types/node": "^7.0.43", "@types/mocha": "^2.2.42" } }
現在 Command 叫作 mycode.
我就在位何一個地方輸入 HelloMyTable 再 SelectText 選取個文字後入Command: mycode
當知道我 selection 的文字為 HelloMyTable 時, 我就直接Send 比我 Server 的 Api
當然要打 Command 不是佷方便, VS Code 能夠定 short-cut (我就用 ctrl+J)
Server 返回的 Result 寫到 editor, .insertSnippet().
可能有些朋友問這樣作與用 VS Code 的 Code Snippet 有什麼不一樣? 這是十分之不一樣呢, 因為個人代碼不是固定的, 是實時按要求生成的. 下面比例實際的例字我用做 Generate Model 層的 Typescript code.
我們就可在這作我們自動代碼了. 以 TypeScript 的 Model 為例. 當我要自動出個 Table Model 去
TypeScript .... 我輸入 con=XXXX 後我先記下要用到那個database, 當發現有 TBL=tblItemmas. Server 就知道現在要在那個 database 找 table (e.g. mssql -> select * From information_schema.columns), Server 的 Api 我就不做介紹了.
WebApi 要如何作就職其發揮. 我主要目的是我統一部份 Coding 的 standard, 當多人一同開發時能夠少很問題, 並且 Data 的 CRUD 這些真的比較差很少. 也用很多時間去寫. 作好個 standard 還是比較好管理.
如何安裝? 直接把個 Folder Copy 去如下地方就能夠. 不用什麼 exe, dll ... 直接就用到.
Windows: %USERPROFILE%.vscodeextensionsmacOS/Linux: $HOME/.vscode/extensions