ssts-hospital-web-master项目实战记录十:master-*.vue组件实现
记录时间:2024-02-23
一、Master_Basic.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>主页</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<script type="text/javascript" src="../Inc/js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="../Inc/js/jquery.cookie.js"></script>
<script type="text/javascript" src="../Inc/js/common.js"></script>
<script type="text/javascript" src="../Inc/js/web.common.js"></script>
<script type="text/javascript" src="../Inc/js/web.object.js"></script>
<script type="text/javascript" src="../Inc/js/web.system.js"></script>
<script type="text/javascript" src="../Inc/js/web.master.js"></script>
<script type="text/javascript" src="../Inc/js/jquery.gesture.password.js"></script>
<link href="../Inc/css/adBox.css" rel="stylesheet" />
<!--"../Inc/css/{主题名}/Master.css"-->
<link href="../Inc/css/basic/Master.css" rel="stylesheet" />
<!--"../Inc/css/{主题名}/Master.css"-->
<link href="../Inc/css/basic/MsgBox.css" rel="stylesheet" />
<!-- 对话框核心JS文件和对应的CSS文件-->
<script src="../Inc/js/alerts/jquery.alerts.js" type="text/javascript"></script>
<link href="../Inc/js/alerts/jquery.alerts.css" rel="stylesheet" type="text/css" />
<script src="Master.js" type="text/javascript"></script>
</head>
<body class="body_master" ondragstart='return false' onselectstart="return false"
onbeforecopy="return false">
<!--顶部区域-->
<div class="top" style="display: block;">
<!--默认logo-->
<div class="logo" style="display: block;">
智慧医疗自助服务终端
</div>
<!--设置logo设置:医院logo+分隔竖线+银行logo-->
<div class="logo" style="display: none;">
<img id="logo" alt="" src="../Inc/images/logo/logo.png" />
</div>
<div class="datetime">
<div id="webjx">
</div>
</div>
</div>
<!--广告区域 -->
<div class="ad" style="display: block; opacity: 0.99;">
<!--轮播图-->
<!--src = "Biz_***/Ad/AdImage.html" -->
<iframe id="if_ad" src="Biz_Basic/Ad/AdImage.html" frameborder="0" scrolling="no"></iframe>
<!--视频-->
<!--src = "Biz_***/Ad/AdVideo.html" -->
<!--<iframe id="if_ad" src="Biz_Basic/Ad/AdVideo.html" frameborder="0" scrolling="no"></iframe>-->
</div>
<!--业务区域-->
<div class="main">
<!--src = "Biz_***/BasePage/Init.html"-->
<iframe id="if_main" src="Biz_Basic/BasePage/Init.html" frameborder="0" scrolling="no"></iframe>
</div>
<!--底部区域-->
<div class="bottom" style="display: block;">
<div class="left" style="display: block;">
<!--src="../Inc/images/{主题名}/Master/position.png"-->
<img id="imgposition" src="../Inc/images/basic/Master/position.png" />
<span id='span_TerminalPosition'>Loading...</span>
</div>
<div class="right" style="display: block;">
<span id='span_TerminalNo'>Loading...</span>
<!--src="../Inc/images/{主题名}/Master/position.png"-->
<img id="imgno" src="../Inc/images/basic/Master/no.png" />
</div>
</div>
<!--顶部分割线-->
<div class="topline" style="display: block;"></div>
<!--底部分割线-->
<div class="bottomline" style="display: block;"></div>
<!--手势密码区域-->
<div id="gesturepwd"></div>
<!--客服功能-->
<div id="kefu">
<input type="checkbox" id="showKfList" />
<label for="showKfList" class="topBtn"></label>
<!--可配置功能:退出|重启|关机|开门|-->
<span class="func1">退出</span>
<span class="func2">重启</span>
<span class="func3">关机</span>
</div>
<!--终端Ip地址-->
<div id="ip">
<span id="span_TerminalIp"></span>
</div>
</body>
</html>
将HTML头部内容转换为Vue组件的实现思路涉及将传统HTML页面的头部标签转换为Vue组件中的逻辑,并确保这些组件在Vue应用程序中正确加载和执行。以下是一个基本的实现思路:
- 创建Vue组件:
- 创建一个新的Vue组件,该组件将负责处理原本位于HTML头部的内容。
- 通常,这些头部内容(如
<meta>
,<link>
,<title>
, 和<script>
标签)不会被直接放在Vue组件中,因为它们通常属于页面级别的配置,而不是组件级别的。
- 使用Vue的生命周期钩子:
- 在Vue组件的
created
或mounted
生命周期钩子中,你可以通过Vue实例访问DOM,并可以动态地修改头部内容。 - 例如,你可以修改
<title>
标签的内容,或者通过Vue的$emit
方法通知父组件或其他组件更改头部内容。
- 在Vue组件的
- 全局样式和脚本:
- 对于全局的样式和脚本文件(如
jquery.js
或Master.css
),它们通常应该在主HTML文件(如index.html
)中加载,而不是在Vue组件中。 - 如果某些样式或脚本需要在特定组件中动态加载,可以考虑使用Vue的动态组件或异步组件功能。
- 对于全局的样式和脚本文件(如
- 组件间的通信:
- 如果头部内容需要根据组件的状态或属性进行更改,可以使用Vue的自定义事件(
$emit
和$on
)或Vuex(状态管理库)来在不同组件之间通信。
- 如果头部内容需要根据组件的状态或属性进行更改,可以使用Vue的自定义事件(
- 组件封装:
- 将头部内容的逻辑封装在一个单独的Vue组件中,这样可以在需要时轻松地在其他组件或页面中重用。
- 维护性和可读性:
- 在将头部内容转换为Vue组件时,要注意保持代码的可读性和可维护性。
- 使用Vue的组件化和模块化特性,将相关的逻辑和样式放在一起,以便于后续的开发和维护。
以下是一个简化的Vue组件示例,该组件演示了如何在Vue中修改页面标题:
<template> | |
<!-- 这里可以包含组件的模板内容 --> | |
</template> | |
<script> | |
export default { | |
name: 'HeadContent', | |
mounted() { | |
// 在组件挂载后,动态设置页面标题 | |
document.title = '新的页面标题'; | |
} | |
}; | |
</script> | |
<style scoped> | |
/* 这里可以包含组件的样式 */ | |
</style> |
在这个例子中,mounted
生命周期钩子被用来设置页面的标题。请注意,直接修改document.title
是一个特例,通常不推荐在Vue组件中直接操作DOM,除非绝对必要。
最后,请记住,Vue的主要用途是构建单页应用程序(SPA),其中页面的内容主要由Vue组件动态生成。对于传统的HTML头部内容,如<meta>
标签和全局样式表,它们通常是在服务器渲染HTML页面时设置的,而不是在Vue组件中动态生成的。
【使用“文心一言”将本文html头部内容转为vue组件】
要将提供的HTML头部内容转换为Vue组件,我们需要考虑几个关键点:
-
Vue组件通常不包含
<head>
标签内容,因为<head>
标签内容是由HTML页面顶部统一管理的,包括<title>
,<meta>
,<link>
, 和<script>
标签。 -
Vue组件主要关注UI和交互逻辑,并且通常放在
<body>
标签内部。 -
我们可以通过在Vue组件内部使用
mounted
生命周期钩子来添加或修改<head>
中的某些内容,例如动态添加CSS或JavaScript文件。 -
如果需要在Vue组件中使用外部JavaScript库(如jQuery),则需要确保这些库在Vue组件加载之前已经加载到页面上。
-
Vue组件通常使用单文件组件(Single File Components, SFCs)格式,包括
<template>
,<script>
, 和<style>
部分。
基于以上考虑,下面是一个简单的Vue组件示例,它包含了在Vue组件中可能会用到的样式和脚本引用,但请注意,它不包括<head>
标签的内容,因为这些内容通常不属于Vue组件的范畴。
<template> | |
<div class="master-component"> | |
<!-- 这里是组件的模板部分,包括HTML元素和Vue指令 --> | |
</div> | |
</template> | |
<script> | |
export default { | |
name: 'MasterComponent', | |
mounted() { | |
// 如果需要在组件加载后动态添加样式或脚本,可以在这里进行 | |
// 例如,使用原生JavaScript动态添加<link>或<script>标签 | |
}, | |
// 其他Vue组件选项... | |
}; | |
</script> | |
<style scoped> | |
/* 这里是组件的样式部分,使用scoped属性确保样式仅应用于当前组件 */ | |
.master-component { | |
/* 组件的样式定义 */ | |
} | |
</style> |
在这个Vue组件中,<template>
部分定义了组件的HTML结构,<script>
部分包含了组件的逻辑,而<style>
部分则包含了组件的样式。
要在整个页面中管理<head>
部分的内容,你需要在页面的主HTML文件中(通常是index.html
)来添加<title>
, <meta>
, <link>
, 和 <script>
标签。在Vue应用中,通常会有一个入口文件(如main.js
),它负责创建Vue实例并挂载到DOM上,但不会包含这些<head>
标签内容。
对于需要在Vue组件中动态加载的脚本或样式,你可以在mounted
生命周期钩子中通过原生JavaScript来添加这些资源。然而,这通常不是推荐的做法,因为它破坏了Vue的静态资源管理和构建工具(如Webpack)的能力。最佳实践通常是在主HTML文件中预先加载所有必要的脚本和样式。
二、master-basic.vue
三、运行测试
npm run dev