Необходимо направлять сырые HTML, CSS и JS файлы. Я использую VueJS с текущим проектом. Вместо использования отдельных файловых компонентов я использую стандартные экземпляры Vue (новые Vue ()) и компоненты Vue (Vue.component) в файлах html и js.
Файлы HTML содержат эти новые экземпляры Vue, и я импортирую в них компоненты с тегами сценария. Компоненты создаются в формате .js с синтаксисом Vue.component ('name') в сочетании с литералами шаблона.
У меня вопрос, как я могу направить их? Точно так же, как это делает Vue-Cli? С вебпаком? Так что я могу в основном иметь dist, заполненный разметкой, в которой есть css и эти js-компоненты.
Я попытался сделать это с webpack, хотя я застрял на части, когда мне нужно импортировать / включить все эти .jsфайлы. Должен ли я импортировать их в main.js как import '../js/comp.js
или?
Я ожидаю, что смогу получить доступ ко всем страницам разметки как таковым при запуске сценариев 'run' и доступе к localhost: PORT / home или подобному.
Пример для account.html file - Примечание: эти импортированные пакеты, которые вы видите, играют свою роль в текущем коде, я просто удалил использование этих плагинов, потому что нет необходимости переусердствовать сhtml.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CallAnswering | Account settings</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="On this page users can change thier settings and personal information" name="description">
<meta content="Petar Brkovic" name="author">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
<!-- Begin page -->
<div id="wrapper">
<!-- Topbar Start -->
<nav-top page_title="Account"></nav-top>
<!-- end Topbar -->
<!-- ========== Left Sidebar Start ========== -->
<nav-side></nav-side>
<!-- Left Sidebar End -->
<!-- Footer Start -->
<footer-comp></footer-comp>
<!-- end Footer -->
</div>
</div>
<!-- END wrapper -->
<div id="modal-wrap">
<!-- Change Picture Modal -->
<change-pic-modal></change-pic-modal>
<!-- Verify Modal -->
<verify-modal></verify-modal>
</div>
<!-- VueJS -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
<!-- Vue Components -->
<script src="../components/core/nav-top.js"></script>
<script src="../components/core/nav-side.js"></script>
<script src="../components/core/footer.js"></script>
<script src="../components/selects/time-zones.js"></script>
<script src="../components/selects/cor.js"></script>
<script src="../components/selects/cob.js"></script>
<script src="../components/selects/country.js"></script>
<script src="../components/selects/account-type.js"></script>
<script src="../components/account/verify-modal.js"></script>
<script src="../components/account/change-pic-modal.js"></script>
<!-- VUE | STARTS -->
<script>
// Define new Vue insntace based on 'wrapper' which wraps top & side nav components in it
new Vue({ el: '#wrapper' });
new Vue({ el: '#modal-wrap' });
</script>
<!-- VUE | ENDS -->
<!-- Vendor js -->
<script src="../../public/assets/js/vendor.min.js"></script>
<!-- custombox -->
<script src="../../public/assets/libs/custombox/custombox.min.js"></script>
<!-- Mulitselect -->
<script src="../../public/assets/libs/multiselect/jquery.multi-select.js"></script>
<script src="../../public/assets/libs/select2/select2.min.js"></script>
<script src="../../public/assets/libs/switchery/switchery.min.js"></script>
<script src="../../public/assets/libs/dropify/dropify.min.js"></script>
<!-- form-upload init -->
<script src="../../public/assets/js/pages/form-fileupload.init.js"></script>
<!-- Init js-->
<script src="../../public/assets/js/pages/form-advanced.init.js"></script>
<!-- Sweet Alerts js -->
<script src="../../public/assets/libs/sweetalert2/sweetalert2.min.js"></script>
<!-- Sweet alert init js-->
<script src="../../public/assets/js/pages/sweet-alerts.init.js"></script>
<!-- Core JS Files -->
<script src="../../public/assets/js/jquery.bootstrap.js" type="text/javascript"></script>
<!-- Plugin for the Wizard -->
<script src="../../public/assets/js/material-bootstrap-wizard.js"></script>
<!-- More information about jquery.validate here: http://jqueryvalidation.org/ -->
<script src="../../public/assets/js/jquery.validate.min.js"></script>
<script src="../../public/assets/js/pages/verification.js"></script>
<!-- App js -->
<script src="../../public/assets/js/app.min.js"></script>
</body>
</html>
Пример для компонента nav-top.js:
Vue.component('nav-top', {
props: ['page_title'],
data() {
return {
user: {
first_name: 'Matt',
last_name: 'Test',
full_name: `${this.first_name} ${this.last_name}`
}
}
},
template: `
<div class="navbar-custom">
<ul class="list-unstyled topnav-menu float-right mb-0">
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
<img src="../../public/assets/images/users/user-1.jpg" alt="user-image" class="rounded-circle">
<span class="pro-user-name ml-1">{{ user ? user.full_name : ' '}} <i class="mdi mdi-chevron-down"></i>
</span>
</a>
<div class="dropdown-menu dropdown-menu-right profile-dropdown ">
<!-- item-->
<div class="dropdown-header noti-title">
<h6 class="text-overflow m-0">Welcome!</h6>
</div>
<!-- item-->
<a href="account.html" class="dropdown-item notify-item">
<i class="fas fa-user"></i>
<span>My Account</span>
</a>
<div class="dropdown-divider"></div>
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fas fa-sign-out-alt"></i>
<span>Logout</span>
</a>
</div>
</li>
</ul>
<!-- LOGO -->
<div class="logo-box">
<a href="index.html" class="logo text-center">
<span class="logo-lg">
<img src="../../public/assets/images/logo-b&w.png" alt="CallAnswering logo" height="50">
<!-- <span class="logo-lg-text-light">Xeria</span> -->
</span>
<span class="logo-sm">
<!-- <span class="logo-sm-text-dark">X</span> -->
<img src="../../public/assets/images/logo-sm.png" alt="CallAnswering logo" height="48">
</span>
</a>
</div>
<ul class="list-unstyled topnav-menu topnav-menu-left m-0">
<li>
<button class="button-menu-mobile disable-btn waves-effect">
<i class="fe-menu"></i>
</button>
</li>
<li>
<h4 class="page-title-main">{{ page_title }}</h4>
</li>
</ul>
</div>
`
})