CDN構建vue項目下引用自定義組件

參考vue創建組件的方式:
https://blog.csdn.net/WU5229485/article/details/82908068
https://blog.csdn.net/wxw20147854/article/details/82829096
https://doc.vue-js.com/v2/guide/components.html

我使用以下的方式自定義組件
在這裏插入圖片描述
折行轉義字符
在這裏插入圖片描述

目錄結構

在這裏插入圖片描述

sort-dropdown我的自定義組件,代碼如下:

JS代碼:demo-component.js

/**
 * course-sort組件
 */
/* 註冊全局組件 */
Vue.component('course-sort',{
	template: '\
	        <el-dropdown placement="bottom-start" trigger="click"  @command="handleCommandSort">\
	            <span class="el-dropdown-link">\
	                課程\
	            </span>\
	            <el-dropdown-menu slot="dropdown">\
	                <el-container class="sort-list-container">\
	                    <el-main class="sort-list-main">\
	                        <div class="sort-title">課程分類</div>\
	                        <el-dropdown-item v-for="(item, index) in rootResourceTypeList" \
	                            :key="index"\
	                            :command="index">\
	                            {{ item.resourceTypeName }}\
	                        </el-dropdown-item>\
	                    </el-main>\
	                </el-container>\
	            </el-dropdown-menu>\
	        </el-dropdown>\
	    ',
    props: [],
    data: function () {
        return {
            rootResourceTypeList: []
        };
    },
    mounted: function () {
        this.getRootResourceTypeList();
    },
    methods: {
        /**
         * 點擊下拉菜單的分類選項
         * @param e command元素
         */
        handleCommandSort: function(i){
            if(i == -1) return;
            this.childrenCourse(this.rootResourceTypeList[i].resourceTypeId, this.rootResourceTypeList[i].resourceTypeName);
        },
        /**
         * 根據資源類型的名稱查看相關的子分類的課程
         * @param resourceTypeName
         */
        childrenCourse(resourceTypeId, resourceTypeName){
			console.log("點擊了分類子項目:");
			console.log(resourceTypeId,resourceTypeName);
        },
        /**
         * 獲取所有的二級課程分類
         */
        getRootResourceTypeList: function() {
			this.rootResourceTypeList = [{
					resourceTypeId: '1001',
					resourceTypeName: '計算機1'
				},
				{
					resourceTypeId: '1002',
					resourceTypeName: '計算機2'
				},
				{
					resourceTypeId: '1003',
					resourceTypeName: '計算機3'
				},
				{
					resourceTypeId: '1004',
					resourceTypeName: '計算機4'
				},
				{
					resourceTypeId: '1005',
					resourceTypeName: '計算機5'
			}];
            console.log("獲取分類");
        }
    }
});

CSS代碼:demo-component.css


	.el-dropdown {
		font-size: 16px;
		cursor: pointer;
	}

	.el-dropdown-menu {
		width: 600px;
		height: 300px;
		padding: 10px 20px;
	}

	.el-dropdown-menu__item {
		display: inline-block;
		min-width: 110px;
		padding: 0 10px;
		margin: 10px 12px 2px 0;
		border-radius: 16px;
		line-height: 32px;
		font-size: 14px;
		color: #333333;
		text-align: center;
		background-color: rgba(0, 0, 0, 0.04);
	}

	.sort-title {
		width: 100%;
		line-height: 18px;
		color: black;
		font-size: 16px;
		text-align: left;
		border-radius: 0;
		padding: 0;
		background-color: rgba(0, 0, 0, 0);
	}

	.sort-title:hover {
		background-color: rgba(0, 0, 0, 0) !important;
		color: black !important;
	}

	.sort-list-container {
		width: 100%;
		height: 100%;
		padding-bottom: 10px;
		overflow-x: hidden;
	}

	.sort-list-main {
		background-color: rgba(0, 0, 0, 0);
		width: 100%;
		height: auto;
		overflow-x: hidden;
	}
	.content{
		width: 70%;
	}

在index.html中調用自定義組件sort-dropdown

調用方式:

<!-- sort-dropdown 使用組件 -->
<script src="components/sort-dropdown/demo-component.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="components/sort-dropdown/demo-component.css">

index.html代碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="common/vue/vue.js" type="text/javascript" charset="utf-8"></script>
		<script src="common/jquery.js"></script>
		<link rel="stylesheet" type="text/css" href="common/base.css"/>
		
		<!-- element-ui引入樣式 引入組件庫-->
		<script src="common/element-ui/index.js"></script>
		<link rel="stylesheet" href="common/element-ui/index.css">
		
		<!-- sort-dropdown 使用組件 -->
		<script src="components/sort-dropdown/demo-component.js" 
		type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" href="components/sort-dropdown/demo-component.css">
		
		<link rel="stylesheet" type="text/css" href="css/index.css"/>
		<script src="js/index.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app" class="padding-xl">
			<h1>{{ title }}</h1>
			<course-sort class="margin-top"></course-sort>
		</div>
	</body>
</html>

index.html中的index.js代碼如下:

var app;
$(document).ready(function(){
	app = new Vue({
		el: '#app',
		components: { // 不需要註冊也能使用
		},
		mounted: function () {
			console.log("vue掛載完成");
		},
		data: {
			title: '使用CDN構建VUE項目'
		},
		methods: {
			
		}
	});
});

效果圖:

在這裏插入圖片描述

總結:

通過CDN方式構建vue項目的自定義組件,目前我還沒有找到如何做成單文件組件的效果,現在只能這樣湊合着使用,將js和HTML寫在一起,樣式文件分開,使用的時候進行導入。
如有方式能做成單文件效果,歡迎留言~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章