在前端、后端編碼中通常會出現一些固定的值,而這些固定的值有的是直接寫死在邏輯代碼中,有的是通過常量或者宏量替換來處理,也有的是通過枚舉類型來轉換,還有就是通過資源配置文件來處理。在上述的幾種方式中,除了配置文件的方式外其余的方式都是寫死在代碼中,雖然從短期來看,這確實解決了交付代碼的壓力;但是從長期來看,這樣的編碼方式並不適應業務需求的變更,不夠靈活。
(一)何謂硬編碼?
最簡單、最直接的理解就是將一些可以變化的固定值寫死在代碼中,是在代碼運行之前就確定好了的,后續若想更改的話,只能是重新修改源代碼和重新編譯、構建后才會生效,這種編碼過程就是硬編碼。網絡的解釋是這樣的:硬編碼是將數據直接嵌入到程序或其他可執行對象的源代碼中的軟件開發實踐,與從外部獲取數據或在運行時生成數據不同。 硬編碼數據通常只能通過編輯源代碼和重新編譯可執行文件來修改,盡管可以使用調試器或十六進制編輯器在內存或磁盤上進行更改。 硬編碼的數據通常表示不變的信息,例如物理常量,版本號和靜態文本元素。 另一方面,軟編碼數據對用戶輸入,HTTP服務器響應或配置文件等任意信息進行編碼,並在運行時確定。
(二)如何解決硬編碼?
這里介紹兩種策略:
- 數據字典表:通過訪問數據庫的方式,從數據庫中獲取需要的固定值。
- 配置文件:重啟服務,運行時讀取配置文件中的配置項獲取需要的規定值。
(1)在前端使用配置文件時,這樣處理:
-
-
- 首先要在工程的根目錄下(package.json所在目錄)創建這樣一個文件:static/js/property.conf.js(文件名可以任意)
- 接着在property.conf.js文件中添加這樣內容:
'use strict' module.exports = { LANG: { CHINESE: 'zh', CHINESE_COUNTRY: 'zh_CN', ENGLISH: 'en', ENGLISH_COUNTRY: 'en_US' },
// 后續就是按照對象的格式來添加硬編碼內容 } - 最后是應用property.conf.js文件:
const propertyConfig = require(‘static/js/property.conf')
-
let lang = propertyConfig.LANG.CHINESE
說明:npm run build命令在根目錄下默認會生成dist文件夾,該文件夾中會有static文件夾和一個html文件,而static文件夾包含了js/property.conf.js文件。
------20200207勉