kunel杂志以及kjr杂志 |
您所在的位置:网站首页 › 阿圭罗为什么叫阿kun › kunel杂志以及kjr杂志 |
大业号和大家一起分享kunel杂志kjr杂志对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 qiankun怎么添加仅子应用可见的全局变量1.安装qiankun qiankun的官网 qiankun - qiankun 安装过程 $ yarn add qiankun # or npm i qiankun -S 主应用安装,子应用不需要安装; 2.主应用 qiankun 配置内容; vue - template - admin 作为本次记录的主体; 新建 micro.js 在一下代码段中,将按照qiankun的配置模式,为主应用配置加载的主应用内容; /** * qiankun 模式 * 子系统构建主控文件 * date:2021-11-26 * author:yangming * description:子系统挂在,并通过主控文件,将子系统挂在进入主系统 */ import axios from 'axios' import { registerMicroApps, start, initGlobalState } from 'qiankun' import store from '@/store/index' // #region 加载外部配置文件 /** * 用于配置,项目读取的自定义配置内容 * @returns 自定义配置内容读取 */ async function getConfig() { var config = {} const localPath = process.env.NODE_ENV === 'development' ? '' : '' if (process.env.NODE_ENV === 'development') { // config = require(`../../../${localPath}server.config.json`) config = await axios.get(`../../../server.config.json`) } else { config = await axios.get(`../../${localPath}/server.config.json`) } // console.log(config) return config } // #endregion // #region 全局监控配置 var actions = null function GlobalState(status) { if (!actions) { actions = initGlobalState(status) actions.onGlobalStateChange( (value, prev) = { // console.log(`[主应用接收到值变化 - ${actions}]:`, value, prev) } ) } else { actions.setGlobalState(status) } } // #endregion /** * 用户登录后,装载子系统 * @param {*} token */ async function LoadingMicro() { // console.log('开始加载子系统') await getConfig().then(res = { var apps = res.data.MICRO_APPS if (apps == undefined apps.length 1) { return } /** * @description: 乾坤注册子应用 * @param1 子应用配置 * @param2 打开子应用时候触发的生命周期 */ registerMicroApps(apps, { beforeLoad: [ function (app) { // console.log('[主应用] before load %c%s', 'color: green;', apps.length) } ], beforeMount: [ function (app) { var initState = { userId: store.getters.userId, token: store.getters.token, route: store.getters.routeList.filter(x = x.meta.code == app.name), code: app.name, role: [] } // 信息变更:全局通知 GlobalState(initState) // console.log('[主应用] before mount %c%s', 'color: red;', app.name) } ], afterMount: [ function (app) { // console.log('[主应用] afterMount mount %c%s', 'color: green;', app.name) } ], afterUnmount: [ function (app) { // console.log('[主应用] after unmount %c%s', 'color: green;', app.name) } ] }) start() }) } export default LoadingMicro 并在Layout Index.vue中的create 时 LoadingMicro这个 === ,用于在客户端启动页面时,装载子应用; server.config.json是外部配置文件,用于在系统部署后,可通过修改Json的内容,重新配置主应用的加载内容,可根据自己实际情况进行配置注册; { "BASE_URL":"", "MICRO_APPS":[ { "name": "EMS", "entry": "//localhost:20009", "container": "#ChildSystem", "activeRule": "#/ems-micro", "props": { "code": "EMS", "name": "EMS - Test" } } ] } 完成以上步骤之后,基本上已经完成了主应用的qiankun配置; 注意:由于子应用启动的时候,需要和主应用保持相对信息一致(token、时间戳),所以,在主应用的qiankun启动时,需要对全局状态进行广播,就需要在beforeMount时,更新全局通知的一致性信息,包括了token、userid等内容;(尤其,在主应用退出登录后,重新登录时,同步token,userid,未避免token不一致,导致的子应用死循环,验证token); 3.子应用配置 在主应用配置完成后,就要对子应用进行配置,配置过程中,可在子应用的main.js中直接配置,也可以自己建立一个js文件用于管理子应用配置内容; /** * 新增: * 渲染函数 * 两种情况:主应用生命周期钩子中运行 / 微应用单独启动时运行 */ function render(props) { // console.log('子应用render的参数', props) props.onGlobalStateChange((state, prevState) = { // console.log('通信状态发生改变:', state, prevState) store.dispatch('authorization/microRegisterActive', state) }, true) // 挂载应用 instance = new Vue({ router, store, render: (h) = h(App) }).$mount('#micro-app') } // new Vue({ // el: '#app', // router, // store, // render: h = h(App) // }) // 新增:用于保存vue实例 let instance = null // console.log(window.__POWERED_BY_QIANKUN__) // 新增:动态设置 webpack publicPath,防止资源加载出错 if (window.__POWERED_BY_QIANKUN__) { // eslint-disable-next-line no-undef __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ } /** * 新增: * bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。 * 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。 */ export async function bootstrap(props) { // console.log(props) // console.log('初始化调用') } /** * 新增: * 应用每次进入都会调用 mount === ,通常我们在这里触发应用的渲染 === */ export async function mount(props) { // console.log('触发时调用', props) render(props) } /** * 新增: * 应用每次 切出/卸载 会调用的 === ,通常在这里我们会卸载微应用的应用实例 */ export async function unmount() { store.dispatch('authorization/microUnApp') // console.log('切出或卸载调用') instance.$destroy() instance = null } // 新增:独立运行时,直接挂载应用 if (!window.__POWERED_BY_QIANKUN__) { render() } 我是在main.js中直接进行了配置,因为内容不是很多,而且一旦配置ok,基本上不会出现变更; 请注意在render === 中的 store的 authorization/microRegisterActive === 该 === 的目的,就是为了接收到全局状态通知的时候,用于新的数据注册控制; /** * 注册路由 * @param {*} param0 * @param {*} data */ microRegisterActive({ commit }, data) { commit('setInfo', data) // 全局变量中如果已经存在router 则不需要再次装载,避免冲突:黄色警告 if (state.route.length === 0) { var newRouter = microRegisterRouter(data.route, data.code.toLowerCase() + '-micro') router.addRoutes(newRouter) commit('setRoute', newRouter) } } 这个 === 的目的就是为了在子应用的全局变量中注册,主应用的全局通知,并注册从主应用获取的子应用对应的路由信息,并注册进入子应用的router中; 完成这个配置以后,子应用中的全局变量中,就已经有了token、userid、routerArray数据了,那么子应用的相关全局信息已经健全,类似完成了登录工作; 但是,在子应用运行过程中,还需要根据业务的实际情况,对用户的活动状态进行校验时,就需要判定当前用户是否为活动用户; 如果不需要如此业务进行支撑,就需要保证子应用在脱离主应用的情况下,无法独立运行; 因为我们的request的请求过程中,必须要带入token这个头参数,这样才能保证子应用的微服务可以通过与主应用的微服务进行校验通讯,否则访问非法; 同样的,在主应用的全局通讯过程中,还可以将子应用的code传递过来,便于日志记录过程中,区别日志来源是那个子系统。如果,在使用子应用的横向扩展时,也可以根据code进行编号处理,便于区分相关操作的渠道;(这个就不展示了,需要自己实现); 4.部署 在完成以上配置后,主应用和子应用的启动过程和开发过程基本上,就已经满足开发使用了。 然而,在部署过程中,可能就会遇到一些红色问题; 例如:css、js文件找不到。 这个问题,就需要在子应用的vue.config.js中进行配置,主要配置内容就是publicPath的路径变更 publicPath: process.env.NODE_ENV === 'development' ? '/' : '/microApps/ems-micro' 这个配置路径的解释:判断当前是否为开发模式,如果是开发模式,那么publichPath的路径就是‘/’ ,而当前模式不是开发模式时,就需要将publicPath更改为'/microApps/ems-micro' 如此才能让部署过程中,子应用的路径正确; microApps/ems-micro 是物理路径,也就是在主应用的 dlist 中 创建microApps文件夹,并在 microApps文件夹中创建ems-micro文件夹,用于存放,ems-micro工程的dlist文件; 注意:publicPath的部署路径,必须和文件创建的路劲一致,否则就会报错; 5.前端同一端口部署说明 1.文件夹结构说明 在部署过程中,需要将主应用与子应用使用一个端口的配置如下: 在开发过程中 Entry 可以为localhst:00001这种模式,如果要发布,则要将子应用的路径改为绝对路径。且前后必须,加入 / , 例如:/mes-micro/ "MICRO_APPS":[ { "name": "MES", "entry": "/mes-micro/", // 与主应用的文件管理器中的路径一致 "container": "#ChildSystem", "activeRule": "#/mes-micro", "props": { "title":"生产管理系统", "code": "MES", "name": "MES - System", "userId": null, "token":null, "route": null } } ] 所谓路径一致,就是要在如下模式: 红色框选中,就是子应用的vue发布代码; 2.子应用配置,需要在vue.config.js中配置publicPath publicPath: process.env.NODE_ENV === 'development' ? '/' : '/mes-micro/', 为什么阿圭罗的绰号叫阿 kun阿圭罗他有着“EL KUN”和“小魔鬼”两个绰号,在场上,他确实如自己的绰号一样,是一个令对手生畏的“小魔鬼”。在此前进行的独立队2-0战胜纽维尔斯老男孩的比赛中,身披10号的阿圭罗一人独进两球,大放异彩,全面压倒了纽维尔斯老男孩的前阿根廷国脚奥特加。 阿圭罗与梅西同时出道,15岁就开始了自己的足球生涯,在世青赛上虽然不如梅西表现抢眼,但在随后开始的阿根廷春季联赛中,他却有着极其出色的发挥。 阿圭罗身材和“野兽”特维斯类似,身高只有1米70,体重69公斤,比较敦实,他的技术特点也与“野兽”有些相似,脚下技术细腻,勇气十足,马可-布兰卡认为这是一名极有升值潜力的新星。《都灵体育报》透露,国际米兰已经和独立队开始了实质性的接洽。不过对于这位17岁的年轻球员而言,过早登陆豪门对于他并非一件好事,由于阿圭罗已经在阿根廷国内成名,国际米兰也很难效仿巴塞罗那对于梅西的做法,趁现在阿圭罗身价不是太高时购入,将他租回独立队获取更多的经验,几年之后让他登陆意甲,先从小球会开始,一步一步打上来,是比较现实的设想 next.js可以用qiankun吗qiankun : 是一个生产可用的微前端框架,它基于 single-spa,具备 js 沙箱、样式隔离、HTML Loader、预加载 等微前端系统所需的能力。qiankun 可以用于任意 js 框架,微应用接入像嵌入一个 iframe 系统一样简单。 应用场景: 1. 主应用与多个相互独自的微应用 一起构成了整个大的微前端应用 2. 可以在同一个页面中,加载多个不同的微应用,每个微应用都是主应用的组成部分 或者是 提供一些增强能力,这种场景可以说是微应用粒度的前端组件化。 即: qiankun 相当于 route-based 的控制台应用,做为一个微应用的聚合框架而被使用。 使用步骤: 1. 主应用安装 yarn add qiankun # or npm i qiankun -S 2. 在主应用中注册微应用 import { registerMicroApps,runAfterFirstMounted, start } from 'qiankun'; // window.qiankunStarted 为严谨,防止加载多次 (可省略) if (!window.qiankunStarted) { window.qiankunStarted = true; registerMicroApps( [ { name: 'invoice', // 子应用名的标识 entry: `${process.env.VUE_APP_INVOICE_URL}`, // 子应用的目标地址, 可在环境变量中配置 container: '#subapp-viewport', // 把加载到的子路由界面放在某个容器中 // loader, activeRule: '/invoice', // 加载以/invoice开头的路由 }, ], // 主应用的生命周期 // { // beforeLoad: [ // app = { // console.log('[LifeCycle] before load %c%s', 'color: green;', app.name); // }, // ], // beforeMount: [ // app = { // console.log('[LifeCycle] before mount %c%s', 'color: green;', app.name); // }, // ], // afterUnmount: [ // app = { // console.log('[LifeCycle] after unmount %c%s', 'color: green;', app.name); // }, // ], // }, ); // 初始化主应用属性 // const { onGlobalStateChange, setGlobalState } = initGlobalState({ // // user: 'qiankun', // }); // onGlobalStateChange((value, prev) = console.log('[onGlobalStateChange - master]:', value, prev)); // 设置自定义属性可传参到子应用中, 在子应用的mounted钩子中使用prop属性来接受 // setGlobalState({ // // ignore: 'master', // // user: { // // name: 'master', // // }, // }); // setDefaultMountApp('/'); start(); // runAfterFirstMounted(() = { // console.log('[MainApp] first app mounted'); // }); } 当微应用信息注册完之后,一旦浏览器的 url 发生变化,便会自动触发 qiankun 的匹配逻辑,所有 activeRule 规则匹配上的微应用就会 === 入到指定的 container 中,同时依次调用微应用暴露出的生命周期钩子。 3. 配置渲染微应用容器的路由 3. 在微应用中导出相应的生命周期钩子 3.1. 在微应用的 src 目录新增 public-path.js if (window.__POWERED_BY_QIANKUN__) { // eslint-disable-next-line no-undef __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__; } 3.2. 修改微应用中的路由文件router.js ,根据微应用标识限制路由范围 3.3. 入口文件 main.js 修改,为了避免根 id #app 与其他的 DOM 冲突,需要限制查找范围。 // 在微应用中的main.js中配置 let instance = null; function render(props = {}) { // props对象中的container属性指的是主应用的dom const { container } = props; instance = new Vue({ router, store, render: (h) = h(App), }).$mount(container ? container.querySelector('#app') : document.querySelector('#app')); } // 独立运行微应用时 if (!window.__POWERED_BY_QIANKUN__) { render(); } /** * bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。 * 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。 */ export async function bootstrap() { console.log('[vue] vue app bootstraped'); } // 应用每次进入都会调用 mount === ,通常我们在这里触发应用的渲染 === export async function mount(props) { console.log('[vue] props from main framework', props); render(props); } // unmount时销毁应用, 防止内存泄漏 export async function unmount() { instance.$destroy(); instance.$el.innerHTML = ''; instance = null; } 4. 配置微应用的打包工具(vue.config.js) const { name } = require('./package'); module.exports = { devServer: { headers: { 'Access-Control-Allow-Origin': '*', }, }, configureWebpack: { output: { library: `invoice`, // 应用标识, 和name保持一致 libraryTarget: 'window', // 把微应用打包成window格式 jsonpFunction: `webpackJsonp_${name}`, }, }, }; 使用qiankun微应用需要注意几点: 1. 在微应用src中新增 public-path.js 文件,用于修改运行时的 publicPath 2. 微应用建议使用 history 模式的路由,需要设置路由 base,值和它的 activeRule 是一样的。 3. 在入口文件最顶部引入 public-path.js,修改并导出三个生命周期函数。 4. 修改 webpack 打包。 主应用路由配置需要注意到的点: 1. 微应用入口路由需配置在主应用的后面. 否则主应用的界面显示不出来 2. 如遇到路由显示的顺序问题, 如上图, 之一个路由菜单需显示在左侧导航栏的最后面, 可以给每个路由设置order属性, 用于在渲染导航栏菜单之前进行排序. 3. 如遇到样式冲突, 则各自加载各自的vue和elementUI 谁熟悉阿圭罗,介绍一下,听说他很强!!塞尔吉奥*莱昂奈尔*阿圭罗(又译作阿奎罗),现年18岁,身高178CM,体重74KG,1988年6月2日生于阿根廷的奎尔马斯,现效力于阿根廷独立队,周薪450英磅,在04-05赛季为阿根廷独立队出场12次,进5球。 技术资料:擅长打前场的所有位置,包括前锋、攻击型中场及中场。擅于盘带,速度较快。 马拉多纳曾经罗列了一大堆自己的接班人,包括里克尔梅、奥尔特加、艾马尔、达历桑德罗、特维兹、梅西等等。但是这一次马拉多纳还提醒佩克尔曼,世界杯阿根廷队少不了17岁的阿根廷独立队射手阿奎罗。 马拉多纳也许是为自己17岁的时候没能踢上世界杯而遗憾,这次接受采访的时候力荐梅西和阿奎罗,希望佩克尔曼不要犯了当年梅诺蒂的错误。众人皆知梅诺蒂和马拉多纳不和,但是 在对阿奎罗的看法方面,两人是惊人的一致。梅诺蒂认为阿奎罗的运球技巧和摆腿的隐蔽方式和巴西前锋罗马里奥极为相似。 这位17岁的独立队前锋被阿根廷球迷视为足以与梅西媲美的新秀。为了争夺他,西甲双雄巴萨和皇马再次展开竞争。根据阿根廷国内的报纸报道,独立俱乐部刚刚拒绝了巴萨开出的1150万欧元报价,该队坚持阿奎罗的身价不能低于2100万。最近车子开价2500万,想把他抢过去。 虽然有消息说阿奎罗已经与巴萨达成个人协议,不过皇马仍未放弃希望,银河战舰关注这位阿根廷足球小将已经长达2年。此外,冬季转会期间,意大利的国际米兰也曾试图签入阿奎罗,而包括比利亚雷亚尔在内的其他欧洲俱乐部也都对独立队小将相当感兴趣。 年纪轻轻的阿奎罗已经成为独立队的标志,在谈及自己的前途时,KUN(阿奎罗昵称)显得非常有信心,他认为无论是巴萨还是皇马都没有区别,在哪家俱乐部自己都能取得成功:“皇马和巴萨之间我不倾向任何一方,因为无论在皇马或巴萨,我都一样能成功。我很喜欢西班牙联赛,每个星期都通过电视追看西甲。比起英超,西甲更让我着迷,我期待着有朝一日能到西班牙踢球。” 阿奎罗动作敏捷、头脑灵活、而且不缺乏力量,独立队名帅梅诺蒂将他比作罗马里奥,而更多人则将他与罗纳尔多相提并论。当记者问他是否有能力到皇马取代罗纳尔多时,阿奎罗毫不犹豫地给出肯定的答复:“是的,当然。我觉得自己已经做好取代罗纳尔多或者其他任何人的准备。在阿根廷,他们都拿我和罗纳尔多做比较,不过我也不会因此操之过急。” 阿奎罗声称自己已经为前往欧洲做足准备:“我已经准备好去西班牙或者其他国家,我很想能尽快去和那些球星们同场竞技。” 阿奎罗也被列为新一代马拉多纳的接班人之一,但他本人认为老马是独一无二的:“阿根廷86年拿到世界杯赛时我还没出世,所以我只能通过录像看到他踢球。谁敢不尊重马拉多纳?但迭戈永远只有一个。我的目标只是成为世界更佳球员之一,我会尽力把一切做到更好。” 他和齐达内有着共同的偶像:“我很小的时候,弗兰西斯科利就吸引了我的目光,后来在独立我崇拜特维斯。当然还有罗纳尔多,人们都拿我和他比较。其实我之一次看到他踢球就开始喜欢他,他的技术很好,速度快,简直就像上帝一样无所不能。我也很尊敬亨利和范尼。” 阿根廷国内球迷都呼吁佩克尔曼将阿奎罗带到德国世界杯上,不过阿奎罗认为即使无法参加世界杯自己也不会放弃,因为即使马拉多纳在1978年世界杯时也落选了阿根廷国家队。阿奎罗说:“如果我不能去世界杯,就只能更努力地证明自己。我还很年轻,有的是时间。当然,如果能取就更好了,即使让我踢2号(在阿根廷代表中后卫)我也愿意。说自己不想参加世界杯的都是傻子 谈起阿根廷的新兴势力,所以人都会对在欧洲大红大紫梅西赞不绝口,若是在阿根廷国内问起,人们首先想到的会是阿古埃罗。1988年6月2日生于布宜诺斯艾利斯的阿古埃罗跟许多阿根廷球星一样出身于并不富裕的家庭,11岁时阿古埃罗加入了独立队的青年军,2003年教练鲁杰里把他从七线队(阿根廷俱乐部无二线队,七线队相当于16岁级别)跳级提拔到一线队,7月5日,阿古埃罗以15岁零1个月的成绩刷新了马拉多纳的联赛登场最年轻纪录,开始了一段传奇之旅。 2005年荷兰世青赛,费拉罗又把他从17岁以下青年队跳级提拔到20岁以下青年队,整届大赛出场4次也是队中最年轻的球员。而阿古埃罗真正在独立一线站稳脚跟还要算上个赛季,不但在技巧,射术和速度方面有了显著提高,而且也把自己在04-05赛季联赛中放不开手脚的心理层面的问题也克服了,梅诺蒂甚至称他是“阿根廷的罗马里奥”。2月26日德比大战两粒炮弹击沉竞技,阿古埃罗背后的10号更显得当之无愧。 阿圭罗含着泪水踢了50分钟比赛,终场哨声之后泪珠扑簌簌滚落下来。第17轮阿根廷秋季联赛上演伤感一幕,这位17岁的独立队新秀很可能就此告别祖国,远涉重洋加盟马德里竞技。 当地时间4月30日,独立队在距离首都500公里之外的客场作战,并且以2比0击败奥林波。阿圭罗一次助攻、一粒点球得分,本应该露出微笑。然而,比赛进行到第42分钟,他却领到了一张黄牌。这样,他累积黄牌已经5张,下一场主场与博卡的比赛将无法参加。泪水就是从这个时候开始浸满他的眼眶。 欧洲俱乐部对阿圭罗的争夺堪称白热化,拜仁慕尼黑的官员在布宜诺斯艾利斯谈了很久,一周前又杀出马德里竞技。几天前西班牙媒体已经载文,称这支西甲俱乐部已经以2300万欧元的价格得到阿圭罗。此外,阿圭罗更看重下一轮主场与博卡的比赛,“这可能是我在独立的最后一场比赛,但我想参加下周主场与博卡的德比,想打进博卡一个球,想在主场和球迷告别。” 关于转会事宜,独立队没有正式宣布什么消息,阿圭罗也说还没有签约。他表示:“一名在阿根廷赛场连续两届联赛表现出色的球员,很难继续留下来。”由于独立队负债累累,官方已于三周前表示,看来本赛季结束之后只能放阿圭罗离开了。 阿圭罗本赛季以来有9粒进球,在独立队他共进23球,参赛53场。由于球队整体实力不强,绝大多数进球是他凭借出色的个人能力创造的机会。阿圭罗是一位单打独斗型球员,身体略嫌单薄,身高只有1.72米,在国内各项调查中,他均排在民众推举的德国世界杯23人名单中 这位来自阿根廷独立队的新星名叫阿圭罗,他有着“EL KUN”和“小魔鬼”两个绰号,在场上,他确实如自己的绰号一样,是一个令对手生畏的“小魔鬼”。在此前进行的独立队2-0战胜纽维尔斯老男孩的比赛中,身披10号的阿圭罗一人独进两球,大放异彩,全面压倒了纽维尔斯老男孩的前阿根廷国脚奥特加。 阿圭罗与梅西同时出道,15岁就开始了自己的足球生涯,在世青赛上虽然不如梅西表现抢眼,但在随后开始的阿根廷春季联赛中,他却有着极其出色的发挥。 阿圭罗身材和“野兽”特维斯类似,身高只有1米70,体重69公斤,比较敦实,他的技术特点也与“野兽”有些相似,脚下技术细腻,勇气十足,马可-布兰卡认为这是一名极有升值潜力的新星。《都灵体育报》透露,国际米兰已经和独立队开始了实质性的接洽。不过对于这位17岁的年轻球员而言,过早登陆豪门对于他并非一件好事,由于阿圭罗已经在阿根廷国内成名,国际米兰也很难效仿巴塞罗那对于梅西的做法,趁现在阿圭罗身价不是太高时购入,将他租回独立队获取更多的经验,几年之后让他登陆意甲,先从小球会开始,一步一步打上来,是比较现实的设想 频频被黑上热搜的蔡徐坤,向时尚圈大迈步,人气指数为何有所提高?官方正式宣布解散《偶像练习生》诞生的超级人气组合NINEPERCENT,其中最受关注的是在C中出道的人气偶像歌手KUN。 刚出道一年多的KUN,可谓微博热搜常客。虽然大部分都被质疑和黑,但几乎不影响KUN在时尚界的大发展。相反,越来越多的高端时尚资源接踵而至,高端大牌代言层出不穷,真是令人羡慕又可恨。 髡残之所以能获得众多知名品牌的代言和各大时尚杂志封面的拍摄,不仅取决于他良好的面值和身材,还取决于他独特的贵族气质。正是这种高贵的气质让他受到众多时尚资源的青睐,并取得了一定的成就。 在众多时尚资源中,KUN被正式宣布为PRADA的之一位全球代言人。作为PRADA的代言人,KUN穿着PRADA的新季服装,参与各种时装走秀。据说以前几乎没有艺人能像KUN一样穿新衣服。长得好看,长得好看的KUN,很好的掌握了各种服装款式。难怪他成为今年时尚服装的宠儿。 除了众多知名的服装资源外,今年KUN还 === 现在各大杂志的封面上。《时尚先生》封面里的KUN处于C位,霸气十足,不像一个刚出道一年多的95后明星。作为新宠,KUN还在法国大师级年度《时尚官方》(Fashion L'officiel)上登上了中国、美国、法国的银十封面,受到时尚界的极大认可。但他经常被嘲讽为“时尚界的一个BUG”。 虽然KUN在时尚界一年多一点就崛起了,但是作为NINEPERCENT的队长,他没有唱功很高的作品。其他八位成员,陈立农、亚当、贾斯汀、埃文、西奥、布吉、李尔鬼(Lil Ghost)和尤长靖,由于各自公司的安排不同,很少聚在一起。所以九成组合在过去一年左右的时间里没有像KUN个人发展的那么发达,几乎没有优秀的团队作品被粉丝记住。 虽然KUN在风格和实力上经常被质疑,被 === 诟病,吐槽整容,抄袭,经常被黑被搜等等。,粉丝数量依然庞大且不断增加,而KUN自己似乎也不太在意路人的黑体质。作为娱乐圈的新人,在时尚圈获得如此丰富的资源是很多人力所不及的,所以边肖在离开组合后仍然看到了KUN的个人发展。 单飞对KUN来说是更好的选择,因为KUN在组合中风格独特,容易确立自己的发展方向。如果跟着团队走,很容易限制自己的风格,失去一些好的资源。另外,KUN从小的锻炼经历也可以帮助他在影视方面有所发展,从此在音乐和影视的道路上发展,塑造时尚的形象。让我们期待这位娱乐圈新人未来的发展。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |