Browse Source

fix

tags/v0.9.1
3136352472 5 years ago
parent
commit
bc339beaa7
  1. 2
      .gitignore
  2. 421
      .idea/workspace.xml
  3. 24
      govue/bindata.go
  4. 77
      govue/cmd/main.go
  5. 56
      govue/config.go
  6. 127
      govue/govue-runtime/header.js
  7. 90
      govue/govue-runtime/runtime.js
  8. 34
      govue/govue.go
  9. 58
      govue/utils.go
  10. 10
      pool/pool.go
  11. 63
      readme.md
  12. 10
      static/css/main.css
  13. 27
      static/index.html
  14. 5
      static/use.js

2
.gitignore

@ -11,4 +11,4 @@
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
.idea

421
.idea/workspace.xml

@ -1,17 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="28e09409-bf4a-4792-a1b4-fc9301162fe5" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/govue/govue-runtime/runtime.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/static/css/main.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/static/index.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/static/js/vue.min.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue-runtime/request.js" beforeDir="false" afterPath="$PROJECT_DIR$/govue/govue-runtime/header.js" afterDir="false" />
<list default="true" id="28e09409-bf4a-4792-a1b4-fc9301162fe5" name="Default Changelist" comment="fix">
<change afterPath="$PROJECT_DIR$/govue/config.go" afterDir="false" />
<change afterPath="$PROJECT_DIR$/govue/utils.go" afterDir="false" />
<change afterPath="$PROJECT_DIR$/readme.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue/bindata.go" beforeDir="false" afterPath="$PROJECT_DIR$/govue/bindata.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue/cmd/main.go" beforeDir="false" afterPath="$PROJECT_DIR$/govue/cmd/main.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue/govue-runtime/header.js" beforeDir="false" afterPath="$PROJECT_DIR$/govue/govue-runtime/header.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue/govue-runtime/runtime.js" beforeDir="false" afterPath="$PROJECT_DIR$/govue/govue-runtime/runtime.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/govue/govue.go" beforeDir="false" afterPath="$PROJECT_DIR$/govue/govue.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/jsruntime/runtime.go" beforeDir="false" afterPath="$PROJECT_DIR$/jsruntime/runtime.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/jsruntime/timeout.go" beforeDir="false" afterPath="$PROJECT_DIR$/jsruntime/timeout.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.go" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pool/pool.go" beforeDir="false" afterPath="$PROJECT_DIR$/pool/pool.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/static/css/main.css" beforeDir="false" afterPath="$PROJECT_DIR$/static/css/main.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/static/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/static/index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/static/use.js" beforeDir="false" afterPath="$PROJECT_DIR$/static/use.js" afterDir="false" />
</list>
@ -26,53 +28,59 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/static/use.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="28" column="3" selection-start-line="28" selection-start-column="3" selection-end-line="28" selection-end-column="3" />
<state relative-caret-position="418">
<caret line="22" column="46" selection-start-line="22" selection-start-column="46" selection-end-line="22" selection-end-column="46" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/govue.go">
<entry file="file://$PROJECT_DIR$/static/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="50" selection-start-line="2" selection-start-column="2" selection-end-line="2" selection-end-column="50" />
<state relative-caret-position="266">
<caret line="17" column="42" selection-start-line="17" selection-start-column="33" selection-end-line="17" selection-end-column="42" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/static/index.html">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/govue.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266">
<caret line="14" column="6" lean-forward="true" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
<state relative-caret-position="-489">
<caret line="92" column="10" selection-start-line="92" selection-start-column="10" selection-end-line="92" selection-end-column="10" />
<folding>
<element signature="e#67#362#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/static/index.js">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="57">
<caret line="3" column="38" selection-start-line="3" selection-start-column="38" selection-end-line="3" selection-end-column="38" />
<state relative-caret-position="247">
<caret line="13" column="5" selection-start-line="13" selection-start-column="5" selection-end-line="13" selection-end-column="5" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/static/js/vue.min.js">
<entry file="file://$PROJECT_DIR$/govue/cmd/main.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="5" column="48" selection-start-line="5" selection-start-column="48" selection-end-line="5" selection-end-column="48" />
<state relative-caret-position="57">
<caret line="26" column="31" selection-start-line="26" selection-start-column="27" selection-end-line="26" selection-end-column="31" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/cmd/main.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="760">
<caret line="48" column="14" selection-start-line="48" selection-start-column="14" selection-end-line="48" selection-end-column="14" />
<entry file="file://$PROJECT_DIR$/readme.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="434">
<caret line="45" column="4" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
@ -80,35 +88,79 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/runtime.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="16" column="52" selection-start-line="16" selection-start-column="47" selection-end-line="16" selection-end-column="52" />
<state relative-caret-position="304">
<caret line="19" column="20" selection-start-line="19" selection-start-column="14" selection-end-line="19" selection-end-column="20" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/parser/parser.go">
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/header.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2356">
<caret line="133" column="46" selection-start-line="133" selection-start-column="38" selection-end-line="133" selection-end-column="46" />
<state relative-caret-position="254">
<caret line="112" column="9" selection-start-line="112" selection-start-column="9" selection-end-line="112" selection-end-column="9" />
<folding>
<element signature="e#337#1643#0" />
<element signature="e#365#1641#0" />
<element signature="e#689#715#0" />
<element signature="e#885#1189#0" />
<element signature="e#911#978#0" />
<element signature="e#1069#1129#0" />
<element signature="e#1256#1341#0" />
<element signature="e#1497#1544#0" />
<element signature="e#1562#1633#0" />
<element signature="n#!!doc;n#GetGoVueId#0" />
<element signature="e#1784#1867#0" />
<element signature="n#!!doc;n#RunInlineCode#0" />
<element signature="n#!!block;n#RunInlineCode#0" />
<element signature="e#2079#2889#0" />
<element signature="e#2233#2883#0" />
<element signature="e#2380#2430#0" />
<element signature="e#2491#2553#0" />
<element signature="e#2597#2656#0" />
<element signature="e#2688#2816#0" />
<element signature="e#2820#2873#0" />
<element signature="e#2923#3127#0" />
<element signature="e#2963#3029#0" />
<element signature="e#3067#3121#0" />
<element signature="n#!!doc;n#LoadGoParam#0" />
<element signature="e#3221#3238#0" />
<element signature="e#3269#5198#0" />
<element signature="e#3405#3428#0" />
<element signature="e#3459#4470#0" />
<element signature="e#3624#3778#0" />
<element signature="e#3964#4464#0" />
<element signature="e#4007#4067#0" />
<element signature="e#4226#4383#0" />
<element signature="e#4477#4506#0" />
<element signature="e#4538#5196#0" />
<element signature="e#4618#4835#0" />
<element signature="e#4746#4825#0" />
<element signature="e#4887#5190#0" />
<element signature="e#5017#5180#0" />
<element signature="e#5069#5166#0" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/header.js">
<entry file="file://$PROJECT_DIR$/../../../github.com/gin-gonic/gin/gin.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="45" selection-start-line="13" selection-start-column="45" selection-end-line="13" selection-end-column="45" />
<state relative-caret-position="183">
<caret line="295" column="22" selection-start-line="295" selection-start-column="22" selection-end-line="295" selection-end-column="22" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/govue.js">
<entry file="file://$PROJECT_DIR$/govue/config.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="25170" column="2" selection-start-line="25170" selection-start-column="2" selection-end-line="25170" selection-end-column="2" />
<state relative-caret-position="836">
<caret line="44" column="23" selection-start-line="44" selection-start-column="22" selection-end-line="44" selection-end-column="23" />
<folding>
<element signature="e#15#87#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -118,8 +170,8 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Go File" />
<option value="JavaScript File" />
<option value="Go File" />
</list>
</option>
</component>
@ -149,6 +201,11 @@
<find>CreateFile</find>
<find>NotYetImplemented</find>
<find>v_ignore_class</find>
<find>govue-src</find>
<find>gv-common</find>
<find>hasaki</find>
<find>hsk</find>
<find>hskutils</find>
</findStrings>
</component>
<component name="GOROOT" path="C:\Go" />
@ -172,23 +229,29 @@
<option value="$PROJECT_DIR$/../../../github.com/dop251/goja/runtime.go" />
<option value="$PROJECT_DIR$/jsruntime/runtime.go" />
<option value="$PROJECT_DIR$/main.go" />
<option value="$PROJECT_DIR$/pool/pool.go" />
<option value="$PROJECT_DIR$/govue/govue.go" />
<option value="$PROJECT_DIR$/govue/cmd/main.go" />
<option value="$PROJECT_DIR$/static/css/main.css" />
<option value="$PROJECT_DIR$/static/use.js" />
<option value="$PROJECT_DIR$/govue/govue-runtime/govue.js" />
<option value="$PROJECT_DIR$/static/index.js" />
<option value="$PROJECT_DIR$/govue/govue-runtime/runtime.js" />
<option value="$PROJECT_DIR$/govue/govue-runtime/header.js" />
<option value="$PROJECT_DIR$/static/css/main.css" />
<option value="$PROJECT_DIR$/static/index.html" />
<option value="$PROJECT_DIR$/static/index.js" />
<option value="$PROJECT_DIR$/static/use.js" />
<option value="$PROJECT_DIR$/pool/pool.go" />
<option value="$PROJECT_DIR$/govue/utils.go" />
<option value="$PROJECT_DIR$/govue.json" />
<option value="$PROJECT_DIR$/govue/config.go" />
<option value="$PROJECT_DIR$/govue/cmd/main.go" />
<option value="$PROJECT_DIR$/readme.md" />
<option value="$PROJECT_DIR$/govue/govue.go" />
<option value="$PROJECT_DIR$/.gitignore" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="187" />
<option name="y" value="141" />
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="130" />
<option name="y" value="36" />
<option name="width" value="1710" />
<option name="height" value="1220" />
<option name="height" value="967" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
@ -230,12 +293,6 @@
<item name="static" type="462c0819:PsiDirectoryNode" />
<item name="css" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="go-service-template" type="b2602c69:ProjectViewProjectNode" />
<item name="go-service-template" type="462c0819:PsiDirectoryNode" />
<item name="static" type="462c0819:PsiDirectoryNode" />
<item name="js" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
@ -250,7 +307,7 @@
<property name="go.gopath.indexing.explicitly.defined" value="true" />
<property name="go.import.settings.migrated" value="true" />
<property name="go.sdk.automatically.set" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/static/js" />
<property name="last_opened_file_path" value="$USER_HOME$" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="nodejs_package_manager_path" value="npm" />
@ -290,21 +347,21 @@
<kind value="DIRECTORY" />
<filePath value="$PROJECT_DIR$/" />
<package value="git.ouxuan.net/3136352472/go-service-template" />
<directory value="C:\Users\wailo\go\src\git.ouxuan.net\3136352472\go-service-template\govue\cmd" />
<directory value="C:\Users\admin\go\src\git.ouxuan.net\3136352472\go-service-template\govue\cmd" />
<output_directory value="$PROJECT_DIR$/" />
<method v="2" />
</configuration>
</component>
<component name="ToolWindowManager">
<frame x="150" y="113" width="1368" height="976" extended-state="0" />
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.40992367" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.36993605" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49101797" visible="true" weight="0.41469195" />
<window_info anchor="bottom" id="Run" order="2" sideWeight="0.49101797" visible="true" weight="0.2733189" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@ -312,7 +369,7 @@
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" order="8" />
<window_info anchor="bottom" id="Version Control" order="9" sideWeight="0.499501" weight="0.32997987" />
<window_info anchor="bottom" id="Terminal" order="10" sideWeight="0.49151698" weight="0.32819906" />
<window_info anchor="bottom" id="Terminal" order="10" sideWeight="0.49151698" weight="0.3275488" />
<window_info anchor="bottom" id="Event Log" order="11" sideWeight="0.500499" side_tool="true" weight="0.32997987" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
@ -328,13 +385,6 @@
<option name="LAST_COMMIT_MESSAGE" value="fix" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja_nodejs/console/module.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="412">
<caret line="45" column="39" selection-start-line="45" selection-start-column="39" selection-end-line="45" selection-end-column="39" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/object_gomap_reflect_test.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
@ -381,33 +431,9 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/use_callback.go" />
<entry file="file://$PROJECT_DIR$/jsruntime/go_request.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="494">
<caret line="29" column="9" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="9" />
<folding>
<element signature="e#19#100#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/interval.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="12" selection-start-line="12" selection-end-line="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/console.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" selection-start-line="11" selection-end-line="11" />
<folding>
<element signature="e#19#111#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/go_request.go" />
<entry file="file://$PROJECT_DIR$/jsruntime/interval.go" />
<entry file="file://$PROJECT_DIR$/jsruntime/console.go" />
<entry file="file://$PROJECT_DIR$/../../../github.com/wailovet/android-vrc/cmd/main.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="399">
@ -430,13 +456,7 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/timeout.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="55">
<caret line="24" column="30" selection-start-line="24" selection-start-column="30" selection-end-line="24" selection-end-column="30" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jsruntime/timeout.go" />
<entry file="file://C:/Go/src/time/time.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
@ -445,16 +465,7 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue-runtime/request.js" />
<entry file="file://$PROJECT_DIR$/../../hasaki-service/hasaki-sdk/hskutils/utils.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="70" lean-forward="true" selection-start-line="70" selection-end-line="74" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/bindata.go">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/govue/bindata.go" />
<entry file="file://$PROJECT_DIR$/jsruntime/runtime.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3306">
@ -463,112 +474,204 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/main.go" />
<entry file="file://$PROJECT_DIR$/pool/pool.go">
<entry file="file://$PROJECT_DIR$/../../../github.com/jolestar/go-commons-pool/pool.go" />
<entry file="file://$PROJECT_DIR$/static/js/modernizr-3.8.0.min.js" />
<entry file="file://$PROJECT_DIR$/static/js/main.js" />
<entry file="file://$PROJECT_DIR$/static/js/jquery-3.4.1.min.js" />
<entry file="file://$PROJECT_DIR$/static/css/normalize.css" />
<entry file="file://$PROJECT_DIR$/../../../github.com/jolestar/go-commons-pool/config.go" />
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/runtime.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1349">
<caret line="77" column="27" selection-start-line="77" selection-start-column="27" selection-end-line="77" selection-end-column="27" />
<state relative-caret-position="14934">
<caret line="802" column="36" selection-start-line="802" selection-start-column="36" selection-end-line="802" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../../github.com/jolestar/go-commons-pool/pool.go">
<entry file="file://$PROJECT_DIR$/static/js/vue.min.js" />
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/govue.js" />
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/parser/parser.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="6935">
<caret line="374" column="24" selection-start-line="374" selection-start-column="24" selection-end-line="374" selection-end-column="24" />
<state relative-caret-position="2356">
<caret line="133" column="46" selection-start-line="133" selection-start-column="38" selection-end-line="133" selection-end-column="46" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/js/modernizr-3.8.0.min.js" />
<entry file="file://$PROJECT_DIR$/static/js/main.js" />
<entry file="file://$PROJECT_DIR$/static/js/jquery-3.4.1.min.js" />
<entry file="file://$PROJECT_DIR$/static/css/normalize.css" />
<entry file="file://$PROJECT_DIR$/static/css/main.css">
<entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.dom.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="12" column="9" selection-start-line="12" selection-start-column="9" selection-end-line="12" selection-end-column="9" />
<state relative-caret-position="19">
<caret line="4750" column="4" selection-start-line="4750" selection-start-column="4" selection-end-line="4750" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../../github.com/jolestar/go-commons-pool/config.go">
<entry file="file://$PROJECT_DIR$/static/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1178">
<caret line="68" column="35" selection-start-line="68" selection-start-column="35" selection-end-line="68" selection-end-column="35" />
<state relative-caret-position="38">
<caret line="2" column="11" selection-start-line="2" selection-start-column="11" selection-end-line="3" selection-end-column="62" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/runtime.go">
<entry file="file://$PROJECT_DIR$/static/css/main.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="14934">
<caret line="802" column="36" selection-start-line="802" selection-start-column="36" selection-end-line="802" selection-end-column="36" />
<state relative-caret-position="304">
<caret line="16" column="1" selection-start-line="16" selection-start-column="1" selection-end-line="16" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../../github.com/dop251/goja/parser/parser.go">
<entry file="file://$PROJECT_DIR$/../../hasaki-service/hasaki-sdk/hskutils/utils.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2356">
<caret line="133" column="46" selection-start-line="133" selection-start-column="38" selection-end-line="133" selection-end-column="46" />
<state relative-caret-position="156">
<caret line="32" selection-start-line="32" selection-end-line="42" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/cmd/main.go">
<entry file="file://$PROJECT_DIR$/pool/pool.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="760">
<caret line="48" column="14" selection-start-line="48" selection-start-column="14" selection-end-line="48" selection-end-column="14" />
<state relative-caret-position="209">
<caret line="17" column="34" selection-start-line="17" selection-start-column="34" selection-end-line="17" selection-end-column="34" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue.go">
<entry file="file://$PROJECT_DIR$/../updatemanage/helper/helper.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="50" selection-start-line="50" selection-end-line="54" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="50" selection-start-line="2" selection-start-column="2" selection-end-line="2" selection-end-column="50" />
<caret line="2" column="25" selection-start-line="2" selection-start-column="25" selection-end-line="2" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/js/vue.min.js">
<entry file="file://$PROJECT_DIR$/govue/utils.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="5" column="48" selection-start-line="5" selection-start-column="48" selection-end-line="5" selection-end-column="48" />
<state relative-caret-position="299">
<caret line="49" column="19" selection-start-line="49" selection-start-column="19" selection-end-line="49" selection-end-column="19" />
<folding>
<element signature="e#15#70#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/header.js">
<entry file="file://$PROJECT_DIR$/../../../github.com/gin-gonic/gin/gin.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="45" selection-start-line="13" selection-start-column="45" selection-end-line="13" selection-end-column="45" />
<state relative-caret-position="183">
<caret line="295" column="22" selection-start-line="295" selection-start-column="22" selection-end-line="295" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/govue.js">
<entry file="file://$PROJECT_DIR$/govue/cmd/main.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="25170" column="2" selection-start-line="25170" selection-start-column="2" selection-end-line="25170" selection-end-column="2" />
<state relative-caret-position="57">
<caret line="26" column="31" selection-start-line="26" selection-start-column="27" selection-end-line="26" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/runtime.js">
<entry file="file://$PROJECT_DIR$/govue/config.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="16" column="52" selection-start-line="16" selection-start-column="47" selection-end-line="16" selection-end-column="52" />
<state relative-caret-position="836">
<caret line="44" column="23" selection-start-line="44" selection-start-column="22" selection-end-line="44" selection-end-column="23" />
<folding>
<element signature="e#15#87#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/use.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="28" column="3" selection-start-line="28" selection-start-column="3" selection-end-line="28" selection-end-column="3" />
<state relative-caret-position="418">
<caret line="22" column="46" selection-start-line="22" selection-start-column="46" selection-end-line="22" selection-end-column="46" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/index.js">
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/header.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="57">
<caret line="3" column="38" selection-start-line="3" selection-start-column="38" selection-end-line="3" selection-end-column="38" />
<state relative-caret-position="254">
<caret line="112" column="9" selection-start-line="112" selection-start-column="9" selection-end-line="112" selection-end-column="9" />
<folding>
<element signature="e#337#1643#0" />
<element signature="e#365#1641#0" />
<element signature="e#689#715#0" />
<element signature="e#885#1189#0" />
<element signature="e#911#978#0" />
<element signature="e#1069#1129#0" />
<element signature="e#1256#1341#0" />
<element signature="e#1497#1544#0" />
<element signature="e#1562#1633#0" />
<element signature="n#!!doc;n#GetGoVueId#0" />
<element signature="e#1784#1867#0" />
<element signature="n#!!doc;n#RunInlineCode#0" />
<element signature="n#!!block;n#RunInlineCode#0" />
<element signature="e#2079#2889#0" />
<element signature="e#2233#2883#0" />
<element signature="e#2380#2430#0" />
<element signature="e#2491#2553#0" />
<element signature="e#2597#2656#0" />
<element signature="e#2688#2816#0" />
<element signature="e#2820#2873#0" />
<element signature="e#2923#3127#0" />
<element signature="e#2963#3029#0" />
<element signature="e#3067#3121#0" />
<element signature="n#!!doc;n#LoadGoParam#0" />
<element signature="e#3221#3238#0" />
<element signature="e#3269#5198#0" />
<element signature="e#3405#3428#0" />
<element signature="e#3459#4470#0" />
<element signature="e#3624#3778#0" />
<element signature="e#3964#4464#0" />
<element signature="e#4007#4067#0" />
<element signature="e#4226#4383#0" />
<element signature="e#4477#4506#0" />
<element signature="e#4538#5196#0" />
<element signature="e#4618#4835#0" />
<element signature="e#4746#4825#0" />
<element signature="e#4887#5190#0" />
<element signature="e#5017#5180#0" />
<element signature="e#5069#5166#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue-runtime/runtime.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304">
<caret line="19" column="20" selection-start-line="19" selection-start-column="14" selection-end-line="19" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266">
<caret line="14" column="6" lean-forward="true" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
<caret line="17" column="42" selection-start-line="17" selection-start-column="33" selection-end-line="17" selection-end-column="42" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/readme.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="434">
<caret line="45" column="4" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/govue/govue.go">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-489">
<caret line="92" column="10" selection-start-line="92" selection-start-column="10" selection-end-line="92" selection-end-column="10" />
<folding>
<element signature="e#67#362#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="5" selection-start-line="13" selection-start-column="5" selection-end-line="13" selection-end-column="5" />
</state>
</provider>
</entry>

24
govue/bindata.go
File diff suppressed because it is too large
View File

77
govue/cmd/main.go

@ -1,32 +1,79 @@
package main
import (
"flag"
"fmt"
"git.ouxuan.net/3136352472/go-service-template/govue"
"git.ouxuan.net/3136352472/go-service-template/pool"
"github.com/gin-gonic/gin"
"log"
"mime"
"path/filepath"
"runtime"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
var addr string
var static string
var useFile string
var mode string
var path string
flag.StringVar(&path, "config", "govue.json", "配置文件路径")
flag.StringVar(&static, "static", "", "静态文件目录")
flag.StringVar(&useFile, "use_file", "", "use文件路径")
flag.StringVar(&addr, "addr", "", "监听ip:port")
flag.StringVar(&mode, "mode", "", "模式release/debug")
flag.Parse()
if flag.Arg(0) == "init" {
err := govue.GenerateConfig(path)
if err != nil {
fmt.Print("文件:", path, "\n生成失败:", err)
} else {
abs, _ := filepath.Abs(path)
fmt.Print("文件:", abs, "\n生成成功:")
}
return
}
config, err := govue.GetConfig(path)
fmt.Println("配置载入:", path)
fmt.Println("渲染协程池最大总数:", config.Pool.MaxTotal)
fmt.Println("渲染协程池最大空闲数:", config.Pool.MaxIdle)
fmt.Println("渲染协程池最小空闲数:", config.Pool.MinIdle)
if addr != "" {
config.Addr = addr
}
if static != "" {
config.StaticDir = static
}
if useFile != "" {
config.UseJsFile = useFile
}
if mode != "" {
config.Mode = mode
}
gin.SetMode(config.Mode)
r := gin.Default()
govue.SetPoolConfig(pool.Config{
MinIdle: 100,
})
govue.SetPoolConfig(config.Pool)
gv, err := govue.NewGoVueDefaultConfig()
gv, err := govue.NewGoVue(config.UseJsFile, config.StaticDir)
if err != nil {
panic(err)
}
r.NoRoute(func(context *gin.Context) {
raw, err := gv.LoadStaticResources(context.Request)
if err != nil {
context.Writer.Write([]byte(fmt.Sprintln("服务器错误", err.Error())))
_, _ = context.Writer.Write([]byte(fmt.Sprintln("服务器错误", err.Error())))
return
}
mime.TypeByExtension(filepath.Ext(context.Request.URL.Path))
@ -40,18 +87,18 @@ func main() {
context.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
context.Header("Access-Control-Allow-Headers", "Action, Module, X-PINGOTHER, Content-Type, Content-Disposition")
})
r.GET("/test", func(context *gin.Context) {
r.GET("/version", func(context *gin.Context) {
context.JSON(200, map[string]interface{}{
"code": 0,
"data": map[string]string{
"method": context.Request.Method,
"query": context.Request.URL.Query().Encode(),
},
"data": "0.9.1",
})
})
gv.StartPoolLog()
r.Run("127.0.0.1:8080")
err = r.Run(config.Addr)
if err != nil {
log.Fatalln("服务意外停止:", err)
}
}

56
govue/config.go

@ -0,0 +1,56 @@
package govue
import (
"errors"
"git.ouxuan.net/3136352472/go-service-template/pool"
)
type Config struct {
Addr string `json:"addr"`
StaticDir string `json:"static_dir"`
UseJsFile string `json:"use_js_file"`
Mode string `json:"mode"`
Pool pool.Config `json:"pool"`
}
func GenerateConfig(path string) (err error) {
if pathExists(path) {
err = errors.New("配置文件已存在")
return
}
config := Config{
Addr: "0.0.0.0:8080",
StaticDir: "static",
UseJsFile: "static/use.js",
Mode: "release",
Pool: pool.Config{
MaxIdle: 2000,
MinIdle: 5,
MaxTotal: 6000,
},
}
jsonToFile(path, config)
return
}
func GetConfig(path string) (c *Config, err error) {
c = &Config{
Addr: "0.0.0.0:8080",
StaticDir: "static",
UseJsFile: "static/use.js",
Mode: "release",
Pool: pool.Config{
MaxIdle: 2000,
MinIdle: 5,
MaxTotal: 6000,
},
}
if pathExists(path) {
jsonByFile(path, c)
}
return
}

127
govue/govue-runtime/header.js

@ -23,7 +23,7 @@ var wx = {
if (!isAbs) {
url = location.pathname + "/" + url
}
url = location.host + "/" + url
url = location.host + "/" + url;
for (; url.indexOf("//") > -1;) {
url = url.replace("//", "/")
@ -51,4 +51,129 @@ var wx = {
statusCode: statusCode,
});
}
};
/**
* 获取页面Id
* @return {string}
*/
function GetGoVueId() {
var id = "";
if (document.getElementsByTagName("html").length > 0) {
id = document.getElementsByTagName("html")[0].getAttribute("gv-id")
}
return id;
}
/**
* 执行内联的javascript
*/
function RunInlineCode() {
var jsInline = document.getElementsByTagName("script");
var jsInlineFiles = [];
for (var i = jsInline.length - 1; i >= 0; i--) {
var isGoVueSrc = jsInline[i].hasAttribute("gv-src");
var isGoVueCommon = jsInline[i].hasAttribute("gv-common");
if (isGoVueSrc) {
var res = {};
var file = jsInline[i].getAttribute("src");
if (jsInline[i].hasAttribute("src") && file != "") {
res["file"] = file
}
if (jsInline[i].text && jsInline[i].text != "") {
res["src"] = jsInline[i].text;
}
if (res["file"] || res["src"]) {
jsInlineFiles.unshift(res);
}
if (isGoVueCommon){
jsInline[i].removeAttribute("gv-src");
jsInline[i].removeAttribute("gv-common");
}else{
jsInline[i].remove();
}
}
}
for (var i in jsInlineFiles) {
if (jsInlineFiles[i]["file"]) {
GoRunCodeByFile(jsInlineFiles[i]["file"]);
}
if (jsInlineFiles[i]["src"]) {
eval(jsInlineFiles[i]["src"]);
}
}
}
/**
* 载入页面传入的参数
*/
function LoadGoParam() {
GoParam = jQuery.deparam(GoQuery);
}
/**
* 忽略标签操作
*/
var GoVueIgnore = function () {
var gv_ignore_tag_map = {};
var gv_ignore_class_map = {};
var gv_ignore_len = 0;
var gv_ignore_class_len = 0;
/**
* 忽略前置
*/
this.ignore = function () {
var gv_ignore = document.getElementsByTagName("gv-ignore");
gv_ignore_len = gv_ignore.length;
for (var i = gv_ignore_len - 1; i >= 0; i--) {
gv_ignore_tag_map[i] = gv_ignore[i].innerHTML;
gv_ignore[i].outerHTML = "<gv-ignore-" + i + "></gv-ignore-" + i + ">";
}
var gv_ignore_class = document.getElementsByClassName("gv-ignore");
gv_ignore_class_len = gv_ignore_class.length;
for (var i = 0; i < gv_ignore_class_len; i++) {
if (!gv_ignore_class_map[i]) {
gv_ignore_class_map[i] = {};
}
var a = gv_ignore_class[i].attributes;
var len = gv_ignore_class[i].attributes.length;
for (var k = len - 1; k >= 0; k--) {
gv_ignore_class_map[i][a.item(k).name] = a.item(k).value;
gv_ignore_class[i].removeAttribute(a.item(k).name);
}
gv_ignore_class[i].setAttribute("class", "gv-ignore-" + i)
}
};
/**
* 恢复忽略内容等待渲染
*/
this.restore = function () {
var gv_restore, i, k, j;
for (i = 0; i < gv_ignore_len; i++) {
gv_restore = document.getElementsByTagName("gv-ignore-" + i);
for (k = 0; k < gv_restore.length; k++) {
gv_restore[k].innerHTML = gv_ignore_tag_map[i];
}
}
for (i = 0; i < gv_ignore_class_len; i++) {
gv_restore = document.getElementsByClassName("gv-ignore-" + i);
for (k = 0; k < gv_restore.length; k++) {
for (j in gv_ignore_class_map[i]) {
gv_restore[k].setAttribute(j, gv_ignore_class_map[i][j]);
}
}
}
}
};

90
govue/govue-runtime/runtime.js

@ -1,81 +1,19 @@
window = domino.createWindow(GoHtmlSrc, GoHref);
document = window.document;
location = window.location;
var govueId = "";
if (document.getElementsByTagName("html").length > 0) {
govueId = document.getElementsByTagName("html")[0].getAttribute("govue-id")
}
var jsInline = document.getElementsByTagName("script");
var jsInlineFiles = [];
for (var i = jsInline.length - 1; i >= 0; i--) {
var isGoVueSrc = jsInline[i].hasAttribute("govue-src");
if (isGoVueSrc) {
var res = {};
var file = jsInline[i].getAttribute("src");
if (jsInline[i].hasAttribute("src") && file != "") {
res["file"] = file
}
if (jsInline[i].text && jsInline[i].text != "") {
res["src"] = jsInline[i].text;
}
if (res["file"] || res["src"]) {
jsInlineFiles.unshift(res);
}
jsInline[i].remove();
}
}
try {
var govueId = GetGoVueId();
GoParam = jQuery.deparam(GoQuery);
var gv_ignore = document.getElementsByTagName("gv-ignore");
var gv_ignore_len = gv_ignore.length;
var gv_ignore_tag_map = {};
for (var i = gv_ignore_len - 1; i >= 0; i--) {
gv_ignore_tag_map[i] = gv_ignore[i].innerHTML;
gv_ignore[i].outerHTML = "<gv-ignore-" + i + "></gv-ignore-" + i + ">";
}
var gv_ignore_class = document.getElementsByClassName("gv-ignore");
var gv_ignore_class_len = gv_ignore_class.length;
var gv_ignore_class_map = {};
console.log("gv_ignore_class", gv_ignore_class_len);
for (var i = 0; i < gv_ignore_class_len; i++) {
if (!gv_ignore_class_map[i]) {
gv_ignore_class_map[i] = {};
}
var a = gv_ignore_class[i].attributes;
var len = gv_ignore_class[i].attributes.length;
for (var k = len - 1; k >= 0; k--) {
gv_ignore_class_map[i][a.item(k).name] = a.item(k).value;
gv_ignore_class[i].removeAttribute(a.item(k).name);
}
gv_ignore_class[i].setAttribute("class","gv-ignore-"+i)
}
LoadGoParam();
for (var i in jsInlineFiles) {
if (jsInlineFiles[i]["file"]) {
GoRunCodeByFile(jsInlineFiles[i]["file"]);
}
if (jsInlineFiles[i]["src"]) {
eval(jsInlineFiles[i]["src"]);
}
}
var goVueIgnore = new GoVueIgnore();
goVueIgnore.ignore();
RunInlineCode();
GoUseCall({
id: govueId,
@ -84,25 +22,9 @@ try {
});
for (var i = 0; i < gv_ignore_len; i++) {
var gv_ignores = document.getElementsByTagName("gv-ignore-" + i);
for (var k = 0; k < gv_ignores.length; k++) {
gv_ignores[k].innerHTML = gv_ignore_tag_map[i];
}
}
goVueIgnore.restore()
for (var i = 0; i < gv_ignore_class_len; i++) {
var gv_ignores = document.getElementsByClassName("gv-ignore-" + i);
console.log("gv-ignore-" + i)
for (var k = 0; k < gv_ignores.length; k++) {
console.log("gv-ignore-" + i,k)
for(var j in gv_ignore_class_map[i]){
console.log("gv-ignore-" + i,k,j)
gv_ignores[k].setAttribute(j,gv_ignore_class_map[i][j]);
}
}
}
} catch (e) {
console.log("VM Uncaught:", e);
}

34
govue/govue.go

@ -6,8 +6,7 @@ import (
"fmt"
"git.ouxuan.net/3136352472/go-service-template/jsruntime"
"git.ouxuan.net/3136352472/go-service-template/pool"
"git.ouxuan.net/hasaki-service/hasaki-sdk/hskutils"
assetfs "github.com/elazarl/go-bindata-assetfs"
"github.com/elazarl/go-bindata-assetfs"
"io/ioutil"
"log"
"net/http"
@ -48,13 +47,26 @@ func SetPoolConfig(config pool.Config) {
func (gv *GoVue) initRender() (err error) {
if gv.StaticPath == "" {
gv.StaticPath = filepath.Join(hskutils.GetSelfFilePath(), "static")
gv.StaticPath = filepath.Join(getSelfFilePath(), "static")
}
if gv.UseJsPath == "" {
gv.UseJsPath = filepath.Join(gv.StaticPath, "use.js")
}
//mainScript, err := ioutil.ReadFile(filepath.Join("govue", "govue-runtime", "runtime.js"))
//if err != nil {
// return
//}
//headerScript, err := ioutil.ReadFile(filepath.Join("govue", "govue-runtime", "header.js"))
//if err != nil {
// return
//}
//govueScript, err := ioutil.ReadFile(filepath.Join("govue-js-src", "dist", "index.js"))
//if err != nil {
// return
//}
mainScript, err := gv.Resources.Asset(filepath.Join("govue-runtime", "runtime.js"))
if err != nil {
return
@ -70,11 +82,6 @@ func (gv *GoVue) initRender() (err error) {
return
}
//govueScript, err := ioutil.ReadFile(filepath.Join("govue-js-src", "dist", "index.js"))
//if err != nil {
// return
//}
gv.jsRuntimePool = pool.NewJsRuntimePool(string(mainScript), gv.UseJsPath, gv.StaticPath, jsruntime.Relys{
jsruntime.Rely{
Src: string(headerScript),
@ -82,9 +89,6 @@ func (gv *GoVue) initRender() (err error) {
jsruntime.Rely{
Src: string(govueScript),
},
//jsruntime.Rely{
// FileName: filepath.Join("govue-js-src", "dist", "index.js"),
//},
}, jsruntime.ModeSync)
return
}
@ -101,10 +105,10 @@ func (gv *GoVue) StartPoolLog() {
}()
lastidle := 0
lastactive := 0
for ; ; {
for {
all, idle, active := gv.jsRuntimePool.NumInfo()
if idle != lastidle || active != lastactive {
log.Println("所有:", all, "空闲:", idle, "活动:", active)
fmt.Println("渲染协程数量变动变动:所有:", all, "空闲:", idle, "活动:", active)
}
lastidle = idle
lastactive = active
@ -118,7 +122,7 @@ func (gv *GoVue) LoadStaticResources(request *http.Request) (result []byte, err
var staticDir string
var filePath = request.URL.Path
if gv.StaticPath == "" {
staticDir = filepath.Join(hskutils.GetSelfFilePath(), "static")
staticDir = filepath.Join(getSelfFilePath(), "static")
} else {
staticDir = gv.StaticPath
}
@ -134,7 +138,7 @@ func (gv *GoVue) LoadStaticResources(request *http.Request) (result []byte, err
}
result, err = ioutil.ReadFile(path)
if !hskutils.PathExists(path) || err != nil {
if !pathExists(path) || err != nil {
return
}
if filepath.Ext(path) != ".html" {

58
govue/utils.go

@ -0,0 +1,58 @@
package govue
import (
"encoding/json"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"strings"
)
func pathExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
var selfFilePath string
func getSelfFilePath() string {
if selfFilePath == "" {
file, err := exec.LookPath(os.Args[0])
if err != nil {
return ""
}
path, err := filepath.Abs(file)
if err != nil {
return ""
}
i := strings.LastIndex(path, "/")
if i < 0 {
i = strings.LastIndex(path, "\\")
}
if i < 0 {
return ""
}
selfFilePath, _ = filepath.Abs(string(path[0 : i+1]))
}
return selfFilePath
}
func jsonToFile(file string, v interface{}) bool {
data, err := json.Marshal(v)
if err != nil {
return false
}
return ioutil.WriteFile(file, data, 0644) == nil
}
func jsonByFile(file string, v interface{}) {
data, _ := ioutil.ReadFile(file)
json.Unmarshal(data, v)
}

10
pool/pool.go

@ -3,7 +3,7 @@ package pool
import (
"context"
"git.ouxuan.net/3136352472/go-service-template/jsruntime"
pool "github.com/jolestar/go-commons-pool"
"github.com/jolestar/go-commons-pool"
"log"
"time"
)
@ -13,9 +13,9 @@ type JsRuntimePool struct {
jsRuntimePool *pool.ObjectPool
}
type Config struct {
MaxIdle int
MinIdle int
MaxTotal int
MaxIdle int `json:"max_idle"`
MinIdle int `json:"min_idle"`
MaxTotal int `json:"max_total"`
}
var DefaultConfig Config
@ -52,7 +52,7 @@ func NewJsRuntimePool(mainScript string, useFileName string, staticPath string,
jrp.jsRuntimePool.Config.BlockWhenExhausted = true
go func() {
for ; ; {
for {
jrp.jsRuntimePool.PreparePool(jrp.ctx)
time.Sleep(time.Second / 5)

63
readme.md

@ -0,0 +1,63 @@
# 基础golang开发的一套vue服务端渲染方案
## 使用
> govue //直接执行
> govue init //生成govue.json 配置文件
> govue --config=dev.json init //生成dev.json 配置文件
> govue --addr=127.0.0.1:8176 //运行在本地8176端口上
> govue --config=dev.json //选择dev.json作为配置文件执行
> govue --static=static //选定./static 为静态文件跟目录
> govue --use_file=static/use.js //选定./static/use.js 为服务端渲染的使用文件
## 可以使用的库
+ Vue[vue]
+ $[jquery]
+ jQuery[jquery]
+ axios[axios]
+ window[不完备的dom环境]
+ document[不完备的dom环境]
+ location[不完备的dom环境]
## 扩展方法
+ GoUse(call function(ctx))[所有请求都经过该方法]
+ GoUseRegistered(id string,call function(query))[注册id标签对应的方法]
+ GetGoVueId()[获取当前页面Id]
## 扩展变量
+ GoHref[当前href,请使用location.href]
+ GoPath[当前path,请使用location.pathname]
+ GoHtmlSrc[当前html原始代码,请不要使用]
+ GoParam[请求参数,map形式]
## 扩展标签
+ gv-id 定义页面ID,只能在html上
```
<html gv-id="index"></html>
```
+ gv-src/gv-common 定义服务端渲染脚本
```
//服务端执行index.js,执行完后去除该标签
<script src="index.js" gv-src></script>
//服务端执行index.js,执行完后保留该标签
<script src="index.js" gv-src gv-common></script>
//gv-src与gv-common 支持内联执行
<script gv-src>
</script>
```
+ gv-ignore标签,gv-ignore块下的标签不会被服务器渲染
+ class='gv-ignore' 含有class为gv-ignore的标签,属性不会被渲染

10
static/css/main.css

@ -4,15 +4,17 @@ html, body {
color: #888888;
}
#app {
.content {
text-align: center;
margin-top: 300px;
}
#app h1 {
.content h1 {
font-size: 68px;
}
#app p {
.content p {
font-size: 28px;
}
pre {
width: 300px;
}

27
static/index.html

@ -1,5 +1,5 @@
<!doctype html>
<html lang="zh" govue-id="index">
<html lang="zh" gv-id="index">
<head>
<meta charset="utf-8">
<meta name="keywords" content="">
@ -8,19 +8,28 @@
</head>
<body>
<div id="app">
<div id="app" class="content">
<my-title></my-title>
<a v-on:click="click" class="gv-ignore">{{desc}}</a>
<a>{{desc}}</a>
</div>
<div id="quick_start" class="content">
<h3>{{title}}</h3>
<a v-on:click="click" class="gv-ignore">查看</a>
</div>
<div id="pre" class="content">
<pre>{{pre}}</pre>
</div>
<pre id="pre">{{pre}}</pre>
</body>
<script src="index.js" govue-src></script>
<script>
<script src="index.js" gv-src></script>
<script gv-src gv-common>
new Vue({
el: "#app",
methods:{
click:function () {
el: "#quick_start",
data: {
title: "快速开始"
},
methods: {
click: function () {
alert("点击触发");
}
}

5
static/use.js

@ -15,9 +15,12 @@ GoUse(function () {
});
//分页面
GoUseRegistered("index", function (query) {
console.log("query:", query);
console.log("query:", JSON.stringify(query));
new Vue({
el: "#app",

Loading…
Cancel
Save