摘要:最好能使用一套模板渲染前后端的數(shù)據(jù),也就是模板和某些簡單組件可以同構(gòu)。開發(fā)組件因?yàn)樾枰尫?wù)端也能使用,單文件的開發(fā)方式我目前是沒有找到可以讓讀取的方式,所以就暫時(shí)放棄了。這種通用組件寫法只適合比較簡單的項(xiàng)目。
項(xiàng)目情況
我使用的是express做為服務(wù)器框架,只需要調(diào)用后臺(tái)API接口獲得數(shù)據(jù),然后把數(shù)據(jù)渲染成html就可以了。最好能使用一套模板渲染前后端的數(shù)據(jù),也就是模板和某些簡單組件可以同構(gòu)。
服務(wù)端渲染vue組件,使用vue-server這個(gè)插件。他的用法和vue差不多。這樣做的目的是首屏服務(wù)端渲染,提升頁面展示速度。
因?yàn)樾枰尫?wù)端也能使用,單.vue文件的開發(fā)方式我目前是沒有找到可以讓node讀取的方式,所以就暫時(shí)放棄了。
還有下面這種寫死組件名字的方式也不太合適
Vue.component("my-component", { /* ... */ }) //這樣寫需要引入Vue,但是前后端的Vue不是一個(gè)東西
所以我選擇了只輸出一個(gè)個(gè)簡單組件對(duì)象的方式,如下 modal.js
為什么template模板要直接寫在里面呢?答:因?yàn)闀?huì)有2種引入方式,前端是可以預(yù)編譯好的沒有問題,但是后端調(diào)用 import "XXX.html" 這句話就可能執(zhí)行不了。
輸出組件#index.js 輸出組件的文件 import modal from "./component/modal/modal" exports.modal = modal前端使用組件
import Vue from "vue" import { picker, modal, toast, alert, preloader, indicator, actions, pullToRefresh, infiniteScroll } from "../src/index" //使用前端的Vue定義組件和指令的名稱 Vue.component("picker",picker); Vue.component("modal",modal); Vue.component("toast",toast); Vue.component("alert",alert); Vue.component("preloader",preloader); Vue.component("indicator",indicator); Vue.component("actions",actions) Vue.directive("pull-to-refresh",pullToRefresh) Vue.directive("infinite-scroll",infiniteScroll)
這樣前端就可以正常使用這個(gè)組件了
后端使用組件import { picker, modal, toast, alert, preloader, indicator, actions, pullToRefresh, infiniteScroll } from "../src/index" let vueServer = require("vue-server") //服務(wù)端Vue let Vue = new vueServer.renderer(); //頁面模板 let tpl = fs.readFileSync(config.PATH_WEBAPP + "/states/index/template.html", "utf-8"); //vue實(shí)例 vm = new Vue({ replace: false, template: tpl, components : { picker : picker, modal : modal, toast : toast, alert : alert }, data: { } }); //渲染好html的事件 vm.$on("vueServer.htmlReady", function (html) { res.render("layout", {server_html:html}); //這個(gè)html就是vue服務(wù)端渲染好的,然后可以通過ejs或者其他模板引擎輸出到layout中。 });
ok 這種通用組件寫法只適合比較簡單的項(xiàng)目。比較適合寫一次綁定生成頁面元素的組件,比如列表,布局這種組件。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/79081.html
摘要:本項(xiàng)目是一個(gè)簡單的全棧項(xiàng)目,前端新手可以拿來練練手。項(xiàng)目實(shí)現(xiàn)了一些簡單的功能,后臺(tái)可以對(duì)圖書進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書,并且前臺(tái)注冊登錄后可以將書的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯(cuò)就來個(gè) star 吧 ^_^】 說明(菜鳥請進(jìn),大神繞道 ~) 前端...
摘要:本項(xiàng)目是一個(gè)簡單的全棧項(xiàng)目,前端新手可以拿來練練手。項(xiàng)目實(shí)現(xiàn)了一些簡單的功能,后臺(tái)可以對(duì)圖書進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書,并且前臺(tái)注冊登錄后可以將書的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯(cuò)就來個(gè) star 吧 ^_^】 說明(菜鳥請進(jìn),大神繞道 ~) 前端...
摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 3282·2023-04-26 01:58
閱讀 1022·2021-11-24 09:38
閱讀 3354·2021-09-03 10:29
閱讀 779·2021-08-21 14:10
閱讀 1542·2019-08-30 15:44
閱讀 3154·2019-08-30 14:10
閱讀 3282·2019-08-29 16:32
閱讀 1532·2019-08-29 12:48