Web項目中前端頁面引用外部Js和Css的路徑問題

Web項目中前端頁面引用外部Js和Css的路徑問題

一般我們在做Web項目時,通常會將多個頁面引入的公共js和css文件抽取出來,單獨寫成一個公共文件,以期方便各個頁面單獨引入,達到複用。

1、抽取分離公共的js和css代碼,並新建成一個文件取名 common.jsp。

<%@ taglib prefix="yy" uri="http://java.sun.com/jsp/jstl/core"%>
<yy:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<head>
    <%--  ./表示當前文件所在目錄 ,./可省略 --%>
    <%-- /表示根目錄  --%>
    <%-- ../../ 代表上兩級目錄  --%>
    <link href="${path}/statics/css/Top.css" rel="stylesheet" type="text/css">
    <link href="${path}/statics/autocomplete/jquery.autocomplete.css" rel="stylesheet" type="text/css"><%--2020/6/11新加--%>
    <link href="${path}/statics/easyui/themes/insdep/easyui.css" rel="stylesheet" type="text/css">
    <link href="${path}/statics/easyui/themes/insdep/easyui_animation.css" rel="stylesheet" type="text/css">
    <link href="${path}/statics/easyui/themes/insdep/easyui_plus.css" rel="stylesheet" type="text/css">
    <link href="${path}/statics/easyui/themes/insdep/insdep_theme_default.css" rel="stylesheet" type="text/css">
    <link href="${path}/statics/easyui/themes/insdep/icon.css" rel="stylesheet" type="text/css">

    <script type="text/javascript" src="${path}/statics/easyui/jquery.min.js"></script>
    <script type="text/javascript" src="${path}/statics/js/jquery-form.js"></script><%--2020/6/11新加--%>
    <script type="text/javascript" src="${path}/statics/easyui/jquery.cookie.js"></script>
    <script type="text/javascript" src="${path}/statics/easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="${path}/statics/easyui/datagrid-detailview.js"></script>
    <script type="text/javascript" src="${path}/statics/easyui/themes/insdep/jquery.insdep-extend.min.js"></script>
    <script type="text/javascript" src="${path}/statics/uploader/swfobject.js"></script><%--2020/6/11新加--%>
    <script type="text/javascript" src="${path}/statics/uploader/jquery.uploadify.v2.1.4.js"></script><%--2020/6/11新加--%>
    <script type="text/javascript" src="${path}/statics/autocomplete/jquery.autocomplete.js"></script><%--2020/6/11新加--%>
   
</head>
相對路徑
  • ./表示當前文件所在目錄 ,./可省略
  • /表示根目錄
  • …/…/ 代表上兩級目錄
絕對路徑
  • 具體的某一個文件所在的路徑,譬如:G:/testworkspace/logo.png
用法
  • 項目中常用相對路徑寫法,因爲當本地項目部署到服務器後,文件路徑一般會發生改變,使用絕對路徑會找不到對應的文件
  • 但是這裏我用的是${path},好處在於其它頁面引入common.jsp時,可以不用考慮其它頁面所處的頁面層級路徑。
    因爲如果你在common.jsp裏使用相對路徑的話,當其它頁面所處的頁面層級路徑不在同一層時,這時其它頁面引入common.jsp後會導致部分頁面找不到引入的資源(js和css)。

2、 引入頁面通過指令元素:include:<%@ include file=""%> 和動作元素include:<jsp:include page="" />

區別
  • 指令元素include:<%@ include file=“文件的相對路徑或絕對路徑”%>
    先包含合併成爲一個文件,變量共享不能同名,然後進行編譯。
  • 動作元素include:<jsp:include page=“文件的相對路徑或絕對路徑” />
    先各自編譯成自己的Servlet,然後再包含。變量各自獨立,可以同名不影響。
總結
  • 指令元素include是在編譯階段就處理所需要的文件,優點是執行速度快。但是被處理的文件在邏輯和語法上依賴於當前的jsp頁面,這導致jsp程序的邏輯變得複雜混亂。
  • 動作元素include是在當前的JSP頁面運行階段才處理所需要引入的文件,缺點是執行要慢一點。但是被處理的文件在邏輯和語法上獨立與當前的JSP頁面。
強烈建議
  • 正規開發中,個人強烈反對使用@include指令,而建議使用<jsp:include page=” ” />指令。保持jsp頁面的邏輯語義清晰,比處理速度快(當然兩者效率上差異不是很大)更重要
  • 使用<jsp:include page=” ” />指令的好處:假設現在又a.jsp,在a中include文件b.jsp,當jsp頁面發生修改時
    假設使用了@include:如果b被修改了,a不會發現b的改變,除非a也被修改了。
    假設使用了jsp:include:如果b被修改了,執行時a馬上會察覺到b的變化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章