該專案注釋較為詳細,具體函式,變數均有解釋。此文件僅對全域性性的問題進行介紹
1.專案目錄結構
元件內部,採用如下目錄結構放置樣式和
2.關於專案注意事項,見readme.md
安裝
npm i開發模式
npm run dev切換環境
切換api也類似,可把env換成api,客戶也同理,env換成client,其他也可以根據需求追加配置項
(切換客戶暫時只用於換膚系列需求)
正式打包
npm run build (檔案打包到dist目錄)
每次打包前請確認config set是否設定正確,最好是每次打包前都重新配置命令過一次
開發規則樣式風格,相容css或stylus。stylus 風格遵循格式:可以不帶分號跟冒號,但必須要有大括號
,舉例:
html, body
元件開發注意點:
頁面元件需要用到資料共享的(跨頁面的資料狀態保持)請使用 mobx注意:功能性元件不要使用!會增加依賴,且必須在 src/models 中定義對應的資料模型,如 賬號資料可用 account.ts或js,這裡建議使用 ts,即便只加了簡單的屬性型別檢查也可以。一些臨時的資料可以直接用 vue 自帶的即可。
儘量減少使用雙向繫結 v-model(單向資料流可以減少一定的bug產出,如果邏輯不複雜可以使用)
功能性元件盡量不做全域性的事件丟擲,轉由容器元件代發。
元件如果呼叫方法相對複雜的可以在同層放乙個demo目錄,裡面放使用的簡單示例**。
// 舉例,上傳功能元件上傳完畢後,向外丟擲乙個 complete 事件:
this
.$emit
('complete'
, uploadedfile)
;// 容器元件
"onuploadsuccess"
/>
...'@lib/...'
;onuploadsuccess
(uploadedfile)
// 其他元件接收,處理
$on(
'upload_success'
, uploadedfile =>
...)
;
原則:盡量把字段文案變為可配置化,包括一些 input前面的label,即能做到統一也能方便萬一要做成多國語言
介面呼叫:
幾個核心庫的選定,同類的不要再引入
非外部引入的庫檔案,命名盡量以駝峰為主
格式化工具 prettier設定 vscode 為例:
"prettier.singlequote": true,
promise部分盡量可以使用 try + catch {} 的方式來代替,減少頁面的邏輯巢狀
meta:
3.介面文件相關
注意:介面的變數名統一採用下劃線命名,本專案做了處理,統一將下劃線轉為駝峰:
所以,涉及到接**互,變數名全部用駝峰處理即可
見api.ts
/**
* 批量改駝峰字段
*/const keytransf =
( store: any,
obj: any,
direct:
'tocamel'
|'toname'
='tocamel'
)=>);
} key !=
transfun
(key)
&&delete store[key];}
);return store;
};
this.$refs.toast.info(errorinfo);
對應每種使用者的介面位址在api.ts
裡,(切換客戶暫時只用於整體換膚系列需求)
/**
* 所有客戶介面的配置,如果同環境下有多個介面,則陣列後面新增
*/const baseurls: any =
, cfzq:
, zyzq:
};
4.流程控制
本專案主要採用流程控制的方法來適配不同券商的不同流程,具體到方法為如下:
// 流程控制,獲取跳轉的下乙個節點
@observable
nextnode: any =
; firstnodeurl ='';
submitnode=
''/**
* 流程流轉下一步,當且僅當當前路由節點與提交節點一致時才提交審核
* @param nodeid 當前流程節點
* @param currentroute 當前路由節點
* @returns
* @memberof accountmodel
*/async
getnextnode
(nodeid: string,currentroute:string));
}const result =
await
api.
request
('/crh-wt1007',)
;if(result.submitflag==
'1')
runinaction((
)=>);
return result;
}
詳細來說就是每次路由跳轉前都必須傳送1007介面,來獲取下乙個頁面的路由節點位址,從而由後端來進行流程控制。本來這個專案之前是由前端通過npm set config client
來控制的,後來發現根本沒法適配多個券商。
注意,根據介面文件,只有當當前頁面的節點與提交節點對應的時候,才可以呼叫1412介面進行最後的提交審核任務
5.配置項控制
適配多個券商的個性化需求,就必須用配置項進行控制。在本專案中,根據1006介面返回值,在basemodel
存入configmap
,注意每個配置項取值必須設定預設值
// 客戶對應的基礎配置資訊
@observable
configmap =
;async
getconfiglist()
; result.
foreach
(cfg =>
);
具體頁面元件直接引用對應值即可,例如:根據配置項來判斷是否需要簽署協議
//獲取是否需要簽署協議
getagreementflag()
}
6.與sdk進行對接
具體介面文件見附件
/**
* ** @param opensinglevideoparams
* @param callback
*/export
function
opensinglevideo
(opensinglevideoparams, callback));
bridge.
callhandler
('opensinglevideo'
, opensinglevideoparams)
;// 註冊函式,給原生呼叫,data為原生端返回的資料
}catch(e
)});
}
7.建議學習
建議學習mobx-vue
/vue-class-component
和jsbridge
官方文件,本專案用到的知識全覆蓋。
THUWC2022 某科學的動態仙人掌
2月24日的模擬賽上的一道題 直接計數是肯定沒法計數的,考試的時候我當時在一直想能不能類似於區間合併,想了好久感覺根本不行,就不會了,聽完題解之後發現這道題十分的nb,lxlnb 居然整體沒法考慮,那就考慮一下每個點對他們的貢獻,如下邊這張圖 很醜的一張 這一坨就代表有乙個聯通塊,我考慮能不能把貢獻...
天津市某生態環境工程研究院 土壤智慧型管理專案
一 客戶及需求 研究院主要從事於濱海濕地種植與工程研究,擁有基地600餘畝,總建築面積2000平方公尺,人工濕地實驗單元由20個構築單元組成,池容為2000立方公尺。為更好的研究土壤含量及改善土壤質量,培育最為合適的農作物,需要一些土壤基數資料變化趨勢和歷史資料用於分析處理。二 應用規模 先期在實驗...