BeetleX.FastHttpApi之Vuejs扩展
非常喜歡用vuejs,但又不想花時間去搞nodejs和webpack之類的,所以才有了BeetleX.FastHttpApi.VueExtend這樣一個組件;組件的主要功能就是可以實現在vs.net中編寫*.vue并直接引用到服務中,這樣對于我這個習慣在vs.net寫服務應的帶來極大的方便性。
BeetleX的web項目結構
以上是Beetlex網關的管理插件,通過BeetleX.FastHttpApi.VueExtend插件只需要在項目的views->vue目錄下編寫相關的.vue文件即可以。當然這個vue的內容和平時在webpack中編寫的有些差別,不過會相對簡單一些:
<div class="admin-page-title"><h1><a href="http://beetlex.io" target="_blank"> Beetlex.io</a></h1><div class="page-menu"><a href="javascript:void(0)" :class="[active=='admin_home'?'active':'']" @click="onChange('admin_home')">主頁</a><a href="javascript:void(0)" :class="[active=='admin_actions'?'active':'']" @click="onChange('admin_actions')">控制器管理</a><a href="javascript:void(0)" :class="[active=='admin_urlrewrite'?'active':'']" @click="onChange('admin_urlrewrite')">URL重寫配置</a><a href="javascript:void(0)" :class="[active=='admin_folder'?'active':'']" @click="onChange('admin_folder')">虛擬目錄</a><a href="javascript:void(0)" :class="[active=='admin_log'?'active':'']" @click="onChange('admin_log')">日志</a><a href="javascript:void(0)" :class="[active=='admin_setting'?'active':'']" @click="onChange('admin_setting')">配置</a><a href="http://beetlex.io" target="_blank">關于</a><a href="javascript:void(0)" :class="[active=='admin_login'?'active':'']" @click="onSignout">退出</a></div> </div> <script>{data(){return {active: 'admin_home',signout: new beetlexAction('/admin/Signout'),}},methods: {onChange(model){this.selected = model;this.$emit('change', model);},onSignout(){this.signout.asyncget().then(r => {page.OnSignout();});}},watch: {selected(val){this.active = val;},},props: ['selected']} </script>使用上相對會變得更簡單,只定義一個vue的結構體,對應的import引入是不需要的,BeetleX.FastHttpApi.VueExtend插件最終會把這些文件生成并輸出一個js文件。
插件使用
由于BeetleX.FastHttpApi.VueExtend是針對BeetleX.FastHttpApi而設計的,所以只能用到Beetlex的項目。
使用之前要到
https://www.nuget.org/packages/BeetleX.FastHttpApi.VueExtend/引用最新版本。引用這后只需要針對HttpApiServer調用Vue()創建相關資源引用即可
HttpApiServer.Vue().Debug(); HttpApiServe.Vue().AddScript(typeof(Program).Assembly,"vue.js", "axios.js", "beetlex4axios.js", "element.js", "autobase.js", "echarts.js");debug:方法主要是用于把解釋目錄指向當前項目的views目錄,這樣就可以修相關VUE文件的時候無法編譯即可刷新最新的結果。這個方法是基于[Conditional("DEBUG")],所以當編譯發布后就無效。
AddScript:方法主要用于添加固定的公共js文件,這些文件在生成后會被放在生成js文件的最頂部分。
頁面引用
BeetleX.FastHttpApi.VueExtend只負責vue生成最終js,需要自己建個控制器來進行頁面引用輸出:
public object GetScript(IHttpContext context) {return context.Server.Vue().Response(context); }html頁面引用
組件會根據生成的js大小進行一個自動的gzip輸出,無須開發人員自行處理。除了自動gzip外組件還引入了If-None-Match頭來標記內容的變更情況,如果輸出的內容沒發生變化組件自動響應304。
實際應用效果
現有BeetleX相關web插件都是使用這種方式來進行插件UI開發,對于只想用vs.net同時處理服務和前端工作的人來算是非常方便;這樣可以把前端和服務端都集成在一個項目中,也不用考慮跨域調試的問題。以下是使用BeetleX.FastHttpApi.VueExtend開發兩個插件的效果
BeetleX開源跨平臺通訊框架(支持TLS)
輕松實現高性能:tcp、http、websocket、redis、rpc和網關等服務應用
https://beetlex.io
總結
以上是生活随笔為你收集整理的BeetleX.FastHttpApi之Vuejs扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 还有多少人不会用K8s?.NET高级高薪
- 下一篇: 数据结构与算法专题——第四题 字符串相似