鍍金池/ 問(wèn)答/Java  HTML/ JS模塊化中加載的文件名更換

JS模塊化中加載的文件名更換

問(wèn)題描述

如今JS主流的組織方式都是模塊化開(kāi)發(fā),但是平常開(kāi)發(fā)中有遇到一種場(chǎng)景:
比如在項(xiàng)目中,有一個(gè)模塊的文件名被更改了,比如:ModuleA.js -> ModuleB.js
這樣就要導(dǎo)致我要找到每個(gè)引入了ModuleA的JS文件都要去做更改,否則會(huì)報(bào)錯(cuò):

import {xxx} from './ModuleA' -> import {xxx} from './ModuleB'

這樣工作量很大而且很不方便,而假如用<script>引入的方式的話,則只需要找到script標(biāo)簽引入的地方更改即可,只需更改一處地方。

<script src="./ModuleA.js"></script> -> <script src="./ModuleB.js"></script>

或者舉個(gè)更常見(jiàn)的例子:
在React開(kāi)發(fā)中,React的組件中都需要有

import React, { Component } from "react";

如果某天react更名叫做react2了。那我們用到react開(kāi)發(fā)的項(xiàng)目不是得找到所有react組件的js文件去更改成

import React, { Component } from "react2";

所以想請(qǐng)各位同學(xué)指點(diǎn)一下,這種場(chǎng)景應(yīng)該如何更加優(yōu)雅地解決?還是這是模塊化開(kāi)發(fā)的不方便之處?萬(wàn)分感激!!!

回答
編輯回答
獨(dú)特范

1.你舉的import和<script>的例子不具有可比性,import換文件名這種操作對(duì)應(yīng)的是<script>的腳本文件中函數(shù)名的更換啊,如果有很多地方用到這個(gè)函數(shù),你也是要一個(gè)個(gè)手動(dòng)修改的。而你舉的<script>的例子對(duì)應(yīng)的更多是app.js/vendor.dll.js這種文件

2.所以這并不是“模塊化”開(kāi)發(fā)的壞處,因?yàn)閭鹘y(tǒng)方式一樣存在。

3.為什么這么不方便,因?yàn)?strong>改文件名本質(zhì)上就是修改了依賴,如同把jquery改成了zepto,react改成了preact,這么想是不是釋然了。

4.目前沒(méi)見(jiàn)到有通用的解決方案,因?yàn)檫@種操作需要對(duì)照舊的引用關(guān)系來(lái)更改對(duì)應(yīng)文件中的名稱。其實(shí)只有編輯器/IDE能做到這點(diǎn),至少目前VS Code是支持的

2017年10月5日 16:38
編輯回答
款爺

我覺(jué)得你應(yīng)該去用個(gè)智能點(diǎn)的IDE,比如試下WebStorm? 文件夾改名 文件改名 自定義模塊改名 函數(shù)改名 參數(shù)變量改名這些變更項(xiàng)目里有引用的都會(huì)智能更新,節(jié)約大把時(shí)間,所以就不存在你這個(gè)問(wèn)題了

2018年3月13日 21:14