229 lines
5.4 KiB
JavaScript
229 lines
5.4 KiB
JavaScript
// 搜索引擎
|
|
|
|
import {
|
|
ref,
|
|
} from 'vue';
|
|
|
|
import {
|
|
SKEY_SEARCH_ENGINE_NAME,
|
|
} from '@/config/storage';
|
|
|
|
import {
|
|
useLocalStorage,
|
|
} from '@vueuse/core';
|
|
|
|
import {
|
|
$message,
|
|
} from './naive-ui';
|
|
|
|
import icon_baidu from '@/assets/website-icon/baidu.svg';
|
|
import icon_bing from '@/assets/website-icon/bing.svg';
|
|
import icon_sogou from '@/assets/website-icon/sogou.svg';
|
|
import icon_360 from '@/assets/website-icon/360.svg';
|
|
import icon_google from '@/assets/website-icon/google.svg';
|
|
import icon_yandex from '@/assets/website-icon/yandex.svg';
|
|
import icon_netease_music from '@/assets/website-icon/netease_music.svg';
|
|
import icon_acfun from '@/assets/website-icon/acfun.svg';
|
|
import icon_bilibili from '@/assets/website-icon/bilibili.svg';
|
|
import icon_qq_music from '@/assets/website-icon/qq_music.svg';
|
|
import icon_cnblogs from '@/assets/website-icon/cnblogs.svg';
|
|
import icon_csdn from '@/assets/website-icon/csdn.svg';
|
|
import icon_github from '@/assets/website-icon/github.svg';
|
|
import icon_mdn from '@/assets/website-icon/mdn.svg';
|
|
import icon_zcool from '@/assets/website-icon/zcool.svg';
|
|
import icon_iconfont from '@/assets/website-icon/iconfont.svg';
|
|
import icon_zhihu from '@/assets/website-icon/zhihu.svg';
|
|
|
|
/** 打开搜索结果页面 */
|
|
export function openSearchResult() {
|
|
|
|
let engine = searchEngineName.value;
|
|
let keyword = searchKeyword.value;
|
|
let baseURL = '';
|
|
let useURL = '';
|
|
|
|
// 获取搜索引擎 URL
|
|
for (let i = 0; i < searchEngineList.length; i++) {
|
|
|
|
let category = searchEngineList[i];
|
|
let engines = category.list;
|
|
|
|
for (let j = 0; j < engines.length; j++) {
|
|
let item = engines[j];
|
|
if (item.name === engine) {
|
|
baseURL = item.url;
|
|
}
|
|
}
|
|
|
|
if (baseURL) {
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if (baseURL) {
|
|
useURL = baseURL.replace(/%keyword%/, keyword);
|
|
}
|
|
|
|
if (useURL) {
|
|
window.open(useURL, '_blank');
|
|
} else {
|
|
$message.error('搜索失败:找不到对应的搜索引擎');
|
|
}
|
|
|
|
}
|
|
|
|
/** 搜索引擎列表 */
|
|
export const searchEngineList = [
|
|
{
|
|
title: '搜索',
|
|
list: [
|
|
{
|
|
name: '百度',
|
|
desc: 'www.baidu.com',
|
|
url: 'https://www.baidu.com/s?wd=%keyword%',
|
|
icon: icon_baidu,
|
|
show: true,
|
|
},
|
|
{
|
|
name: '必应',
|
|
desc: 'cn.bing.com',
|
|
url: 'https://cn.bing.com/search?q=%keyword%',
|
|
icon: icon_bing,
|
|
show: true,
|
|
},
|
|
{
|
|
name: '搜狗',
|
|
desc: 'www.sogou.com',
|
|
url: 'https://www.sogou.com/web?query=%keyword%',
|
|
icon: icon_sogou,
|
|
show: true,
|
|
},
|
|
{
|
|
name: '360',
|
|
desc: 'www.so.com',
|
|
url: 'https://www.so.com/s?q=%keyword%',
|
|
icon: icon_360,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'Google',
|
|
desc: 'www.google.com',
|
|
url: 'https://www.google.com/search?q=%keyword%',
|
|
icon: icon_google,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'Yandex',
|
|
desc: 'yandex.com',
|
|
url: 'https://yandex.com/search/?text=%keyword%',
|
|
icon: icon_yandex,
|
|
show: true,
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: '多媒体',
|
|
list: [
|
|
{
|
|
name: '网易云音乐',
|
|
desc: 'music.163.com',
|
|
url: 'https://music.163.com/#/search/m/?s=%keyword%',
|
|
icon: icon_netease_music,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'AcFun',
|
|
desc: 'www.acfun.cn',
|
|
url: 'https://www.acfun.cn/search/?keyword=%keyword%',
|
|
icon: icon_acfun,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'bilibili',
|
|
desc: 'search.bilibili.com',
|
|
url: 'https://search.bilibili.com/all?keyword=%keyword%',
|
|
icon: icon_bilibili,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'QQ音乐',
|
|
desc: 'y.qq.com',
|
|
url: 'https://y.qq.com/n/ryqq/search?w=%keyword%',
|
|
icon: icon_qq_music,
|
|
show: true,
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: '技术',
|
|
list: [
|
|
{
|
|
name: '博客园',
|
|
desc: 'zzk.cnblogs.co',
|
|
url: 'https://zzk.cnblogs.com/s?w=%keyword%',
|
|
icon: icon_cnblogs,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'CSDN',
|
|
desc: 'so.csdn.net',
|
|
url: 'https://so.csdn.net/so/search/all?q=%keyword%',
|
|
icon: icon_csdn,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'GitHub',
|
|
desc: 'github.com',
|
|
url: 'https://github.com/search?q=%keyword%',
|
|
icon: icon_github,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'MDN',
|
|
desc: 'developer.mozilla.org',
|
|
url: 'https://developer.mozilla.org/zh-CN/search?q=%keyword%',
|
|
icon: icon_mdn,
|
|
show: true,
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: '设计',
|
|
list: [
|
|
{
|
|
name: '站酷',
|
|
desc: 'www.zcool.com.cn',
|
|
url: 'https://www.zcool.com.cn/search/content?word=%keyword%',
|
|
icon: icon_zcool,
|
|
show: true,
|
|
},
|
|
{
|
|
name: 'Iconfont',
|
|
desc: 'www.iconfont.cn',
|
|
url: 'https://www.iconfont.cn/search/index?searchType=icon&q=%keyword%',
|
|
icon: icon_iconfont,
|
|
show: true,
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: '社区',
|
|
list: [
|
|
{
|
|
name: '知乎',
|
|
desc: 'www.zhihu.com',
|
|
url: 'https://www.zhihu.com/search?type=content&q=%keyword%',
|
|
icon: icon_zhihu,
|
|
show: true,
|
|
}
|
|
]
|
|
},
|
|
];
|
|
|
|
/** 搜索引擎名称 */
|
|
export const searchEngineName = useLocalStorage(SKEY_SEARCH_ENGINE_NAME, '必应');
|
|
|
|
/** 搜索关键词 */
|
|
export const searchKeyword = ref('');
|