怎么说呢就这样吧
程序员老公们,明天节日快乐呀
今天吗?程序员节不是昨天吗
怎么说呢就这样吧
一般高校物联网工程女生就业方向
找专业对口的职位当然最好,物联网方向的公司还是有一些选择的,我理解硬件、家电、车企都有相关。
但不对口也是没有问题的,我做过小调研,“找到专业不对口”的学生数量,是“专业对口”的两倍(不严谨的调研,仅供参考)。
你在专业方向所学到的底层逻辑、方法论、项目经验,都是可以应用在其他领域的。
因此,大胆投递你的简历,多接触不同公司,每次接触都是一次学习的机会。加油!
怎么说呢就这样吧
就业压力
大部分行业都会遇到所谓的“大环境问题”
所有人都遇到困难,那就等于没有困难
放平心态吧~
怎么说呢就这样吧
今日大厂爆料:宇宙厂/多多/鹅厂/熊厂/老铁厂/桔厂......
熊厂、老铁厂、桔厂都是啥……
怎么说呢就这样吧
双非一本可以找嵌入式工作吗?
双非一本,在投递时确实没有优势。但实际项目经验,是你很大的优势,在简历和面试中都需要重点阐述。
简历:突出你的项目经验、专业技能和相关课程学习成果。
面试:
1. 对自己的项目要非常熟悉,能够清晰地阐述项目的技术细节。最好能有些业务视角,比如为什么做这个项目、解决了什么问题。
2. 体现你的学习能力,通过项目有哪些learning。告知面试官,你能保持长期的竞争力。
加油加油
怎么说呢就这样吧
入职前,如何判断一家公司加班多不多?
有意思的数据😂
怎么说呢就这样吧
互联网大厂校招薪资水平如何?
校招薪资现在这么高吗?
和当年高不少,不过求职门槛也高了。
怎么说呢就这样吧
就业环境太差
两天一个面试还可以吧?
现在公司筛选人才很严格,不少人一周可能才1-2个面试。
好好把握当前机会,加油!
怎么说呢就这样吧
互联网人辞职的20条理由,你中了几条?
中了好几条😭
怎么说呢就这样吧
AI方向,学习c还是python,求大神指点?
如题
怎么说呢就这样吧
诺贝尔物理学奖意外颁给了“AI教父”,你怎么看?
近日,瑞典皇家科学院宣布,将2024年诺贝尔物理学奖授予约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton),以表彰他们推动利用人工神经网络进行机器学习的基础性发现和发明。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgSeNce_-QZtTKkdasJJSX8OMHXN.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgSeNce_-QZtTKkdasJJSX8OMHXN.png)
诺贝尔物理学奖委员会主席Ellen Moons表示:“获奖者的工作已经产生了巨大的效益。在物理学领域,我们将人工神经网络应用于广泛的领域,例如开发具有特定属性的新材料等。”
此次颁奖,打破了传统上对于物理领域的认知。你对此次诺贝尔物理学奖,有什么看法吗?
怎么说呢就这样吧
vue2和3区别
差异主要体现在架构、性能优化、API 改进等方面。
架构改进方面,Vue 3 的模块化设计。
性能优化方面,Vue 3的渲染渲染性能会更高;Vue3也更好地支持tree-shaking,可以去除未使用的代码,减小程序的体积。
另外,Vue3移除了部分生命周期钩子,引入了新的钩子如 setup(),使得生命周期管理更加直观。
除此之外,还有一些改动,就不一一阐述了。
怎么说呢就这样吧
就业环境还好吗
每个阶段都有“好”和“不好”的时候。
互联网从业者对于岗位溢价已经习惯,因此认为自己就应该值这么多钱。
其实纵观整体环境,若你能接受平均薪资水平,其实就业环境也“还好”。
怎么说呢就这样吧
Map Struct 框架?
教程方面,官方文档就很详细,安装方法和简单的使用示例。然后逐步深入学习映射规则、高级功能等内容。
地址:https://mapstruct.org/documentation/。
然后,B站我记得也有很多教程。
实践方面,就按文档,搭建一个简单的 Java 项目环境,并引入 Map Struct 框架。可以使用 Maven 或 Gradle 等构建工具来管理项目依赖。
GitHub有不少相关项目,可以作为项目研究。
怎么说呢就这样吧
AI识图的功能推荐用哪个模型
感觉是很棒的项目!以我浅薄的认知,推荐几个模型。
1. MobileNet
特点:轻量级、计算效率高,适合移动设备部署。
优点:体积小、速度快,适合实时处理。
缺点:相比其他模型,精度略低。
2. EfficientNet
特点:高效的神经网络架构,通过复合尺度因子来扩展模型。
优点:在保持较高准确率的同时,模型大小适中。
缺点:比MobileNet稍大,但在性能和精度之间取得了良好的平衡。
3. YOLO (You Only Look Once)
特点:实时目标检测框架,适合视频流处理。
优点:实时性强,适用于视频帧的连续处理。
缺点:最新版本的YOLO模型可能比较大,需要较强的硬件支持。
4. Tiny-YOLO
特点:YOLO系列的一个轻量级变种。
优点:体积更小,更适合资源受限的设备。
缺点:精度相比YOLO略有下降。
你可以先调研下这几个
怎么说呢就这样吧
应届二本生的工作方向
我虽然不是做技术的,但也谈谈自己的想法:
1. 互联网行业的话,二线城市生活基本不成问题,这个行业依旧处于溢价状态,但岗位数和岗位要求对比前几年,明显严苛
2. 从目前各分支来看,AI相对处于蓝海阶段,AI行业的Java岗依旧在岗位数上排名第一;AI业务侧在岗位数上,也是缺口较大
3. 和之前答主提到的一样,校园中多尝试不同方向的实践项目,或者自己探索实验项目。不仅是探索自己之所长,也是积累经验的手段之一
加油!
怎么说呢就这样吧
黄仁勋称产品供不应求,但英伟达的麻烦还在后头?
老黄说产品供不应求:大家都指望我们,每天只睡三小时
英伟达的股价在周三上涨了8%,原因是老黄表示,英伟达的产品需求量大得“难以置信”。在高盛的Communacopia科技大会上,黄仁勋说:“所有东西都卖光了”。老黄特别提到了用AI来设计芯片是多么exciting:“真正紧张的部分是我们肩负的世界……少睡一点没关系,睡足三小时就够了。”
以下部分摘自36kr,分析有一定信息含量:
8月底英伟达交出了一份大涨、超预期财报,且还有500亿美元回购计划,但市场依旧充满忧虑。媒体报道下跌说法是下一季度指引未及华尔街最乐观预期。
盈利能力来看,第二季度毛利率为75.15%,净利率为55.26%,系2023年高增以来首次下滑。再看三季度毛利率指引,为74.4%。盈利水平连续2个季度下滑,引起市场警觉。
在当前AI芯片供不应求大背景下,为什么毛利水平持续下移?
再看超微电脑,已经连续2个季度业绩不及市场预期,财报后的第一个交易日均大跌20%左右。看一个关键指标,最新毛利率为11.23%,创下2009年上市以来最低。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FmVMfMx1o4Gc3A1_H58eTvmbPsZ0.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FmVMfMx1o4Gc3A1_H58eTvmbPsZ0.png)
英伟达高成长性背后的脆弱逻辑
1. 数据中心业务的风险
- 需求饱和:尽管英伟达在数据中心业务上取得了巨大成功,但客户需求可能达到饱和。类似于5G基站的建设,初期需大量采购,但随后需求会放缓,最终可能仅需维护更新。
- 商业模式不确定性:美国科技巨头尚未找到AI变现的有效途径,若持续亏损,可能减少对GPU的采购量。
- 价格压力:随着供应增加,英伟达GPU的价格可能面临下调的压力。同时,市场竞争加剧,AMD、华为等竞争对手的崛起也可能影响英伟达的市场份额。
2. 日元套利交易的影响
- 资金流向:过去几年,美元贬值导致全球投资者进行日元套利交易,资金流入美国市场,推动了包括英伟达在内的AI科技股的上涨。
- 汇率逆转:随着美元兑日元汇率的回升,日元套利交易的资金开始回流,可能导致科技股下跌。
3. 宏观经济风险
- 就业数据:美国的就业数据反映出经济放缓的趋势,可能影响科技股的表现。
- 经济衰退:若美国经济陷入衰退,科技股可能随之走低。
综合来看,英伟达面临的不仅是商业竞争的压力,还有宏观经济环境的变化,这些都将对其未来的成长性构成挑战。
关注AI行业的你怎么看?
怎么说呢就这样吧
阿里云发生机房火灾!云服务还靠谱吗??
貌似大部分受影响的服务已经恢复正常。针对这个问题,浅谈一下云服务可靠性:
任何数据中心都可能遭遇突发事件,但像阿里云这样的大型云服务提供商通常都会有灾备措施来应对这些问题。说明他们会有多重备份和灾难恢复机制来确保服务的连续性和数据的安全。
当然,对于任何云服务,用户都需要提前评估下,考虑多地域部署或其他形式的冗余来降低单一故障点的风险。如果担心单一云服务提供商的风险,也可以考虑采用多云策略来分散风险(当然,成本更大…)。
怎么说呢就这样吧
现在嵌入式的工作哪里找呀
嵌入式工程师,我看万码上就有很多在招岗位。
怎么说呢就这样吧
MoonBit,国产编程语言之光?
MoonBit是一款新兴的国产编程语言,最近发布了Beta预览版,引入了现代化的泛型系统、精准错误处理和高效的迭代器等功能。
MoonBit以其卓越的运行速度和小巧的代码体积著称,其运行速度据称比 Go 快约35倍, 在编译为 WebAssembly 时,输出的文件大小远小于 Rust、TypeScript 和 Python5.
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FqiyosgPONSjjs0eRaUNV1bA9B5q.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FqiyosgPONSjjs0eRaUNV1bA9B5q.png)
MoonBit 的设计注重安全性,采用了强大的静态类型系统和内置的静态检测工具。除此之外,MoonBit 原生支持 WebAssembly,使其适用于云计算和边缘计算等多个领域。
MoonBit 已经积累了大量的用户群体,并且已有实际的商业应用场景,例如一家图数据库公司已在其产品中采用 MoonBit。为了进一步推广和发展 MoonBit,IDEA 研究院发起了全球编程创新挑战赛,设立了丰厚的奖金池,旨在促进编程人才的培养。
MoonBit在国内外受到了广泛关注,你怎么看??
怎么说呢就这样吧
没有技术背景可以学AI嘛
可以,无需打代码即可入行AI领域!
但需要了解AI底层逻辑(入行核心),从而了解AI的能力边界;
了解能力边界,才能从AI视角解决业务问题。
怎么说呢就这样吧
如何评价9月10日发布的iPhone16系列?你会购买吗?
对于iPhone16的记忆点,可能只有新增的「功能键」,虽然苹果称之为「相机控制」,但预计未来会开放给各种功能,比如AI。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgDR7gMvbHxw3chR6nkhREe-1e9Z.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgDR7gMvbHxw3chR6nkhREe-1e9Z.png)
总体来说,功能升级还是挤牙膏了,也为了避免陷入消费陷阱,我的iPhone14 pro估计还能用个2-3年。
怎么说呢就这样吧
24年普通本科
当然有机会,且机会很大。
目前有很多资料和课程,以了解ai相关信息。
以AI产品/工程师的角度来看,核心有两个点
ai和产品的关系:模型原理、ai能力边界,可形成的产品会是什么形态
产品和业务的关系:解决业务实际问题,但需要ai视角看待(比如workflow),目前也有很多实际落地case可以参考。
目前AI业务角色比较稀缺(产品,运营,销售…),机会非常多。
当然,研发岗虽然目前人数多,但空席依旧很多。
怎么说呢就这样吧
面试官的那些问题,让你会很头疼??
有次面试官问我结婚了没……
我:???
怎么说呢就这样吧
怎么开发人工智能
1. 准备好硬件。
2. 安装 Ubuntu。
3. 安装基础软件。
4. 配置 GPU 和 CUDA。
5. 安装 TensorFlow 或 PyTorch。
6. 测试环境。
7. 部署应用。
8. 监控和维护。
怎么说呢就这样吧
为什么OpenAI突然把GPT-4o给免费了?
如题……
怎么说呢就这样吧
vue VS bootstrap
Vue.js
优点:
- 学起来快,文档好。
- 组件化,代码容易维护。
- 灵活,可以逐步集成到项目里。
- 有响应式系统,数据变化时页面自动更新。
缺点:
- 相比React或Angular,市场使用没那么广泛。
- 长期支持可能是个考虑因素。
Bootstrap
优点:
- 提供很多现成的UI组件,开发速度快。
- 响应式设计,适合移动端。
- 文档齐全,社区支持强大。
- 兼容多种浏览器。
缺点:
- 文件比较大,可能会影响加载速度。
- 定制起来可能有点麻烦。
- 早期版本依赖jQuery,现在这个依赖减少了。
简单总结下:
如果你要写一个交互性强的Web应用,选Vue。
如果你需要快速搭建一个好看的静态网站,用Bootstrap。
希望表达清楚了~
怎么说呢就这样吧
流程图大屏实现方案?
我觉得稍微熟悉一下 path 的写法,写SVG也比较简单吧,而且可以:
· 自由控制线条走向/圆角大小/颜色/粗细/虚线步长...;
· 自由控制动画快慢;
· 结合需求显示/隐藏SVG,实现流程运行/停止状态;
贴一段我随意写的SVG代码,你参考看看:
Animated SVG Curve
@keyframes dash {
to {
stroke-dashoffset: -100%;
}
}
.path {
stroke: rgb(247, 24, 8);
stroke-width: 4;
fill: none;
stroke-dasharray: 8;
animation: dash 10s linear infinite;
}
-->
怎么说呢就这样吧
Vue Router 与 transition 组件结合,如何实现页面切换时旧页面驻留效果?
移除 mode="in-out"
另外你的div可能加上position:absolute来固定位置,要不然两个页面过渡过程中会把第二个页面挤到滚动条下面。
怎么说呢就这样吧
Vue3将node_modules内能正常引入的插件包文件拷出来后引用为什么会报错?
改用 script:src 引入的方式,引入 avue
👉 examples/element-ui/card/index.html · smallwei/Avue - Gitee.com
怎么说呢就这样吧
如何理解“与普通的 只在组件被首次引入的时候执行一次不同, 中的代码会在每次组件实例被创建的时候执行”?
对于组件:
// script setup
import { ref } from 'vue'
const count = ref(0)
// script
const CompName = 'MyComp'
{{ CompName }}
count: {{ count }}
click me
将被编译为:
import { ref } from "vue";
// script
const CompName = "MyComp";
const __sfc__ = {
__name: "Comp",
setup(__props, { expose: __expose }) {
__expose();
// script setup
const count = ref(0);
const __returned__ = { CompName, count, ref };
Object.defineProperty(__returned__, "__isScriptSetup", {
enumerable: false,
value: true,
});
return __returned__;
},
};
function render(_ctx, _cache, $props, $setup, $data, $options) {
/** 渲染函数 */
}
__sfc__.render = render;
__sfc__.__file = "src/Comp.vue";
export default __sfc__;
script 部分在模块顶层,将在模块第一次导入时执行。而 script setup 部分被编译为 setup 函数,将在每次组件创建时被 vue 调用。
怎么说呢就这样吧
Vue项目一个报错无法找到原因?
猜测是有一个地方动态调用,比如 switch(type) case 1: 'on'; case 2 : 'off' 之类的,然后去调用 Vue 上对应的函数。但是某些条件下运算结果是 undefined,于是就出现你的这个问题了。
这里就告诉我们,别整那么动态,不然到时候出问题都没法 debug。
至于解法嘛,
先看 backend.js 2119 行 28 到底是是个啥
如果不是第三方库导致的,就在你的代码里搜索 Vue[ 试试看
如果都不行,把 backend.js 拆开,缩小问题范围
怎么说呢就这样吧
如何在 Vue.js created/mounted 钩子中操作并加载异步数据?
方法体:
patientListData() {
return new Promise((resolve, reject) => {
//处理逻辑
resolve()
}).catch(...)
}
// created方法
async created() {
...
await patientListData()
}
怎么说呢就这样吧
vue相同的路由之间如何跳转,只是url参数不一样?
你在问这个问题的时候,应该已经预先知晓 "vue-router" "动态路由" (https://link.segmentfault.com/?enc=dygq0U%2Fj%2BvYBi0hSoBxZgQ%3D%3D.IRMZzWWeHjzfzH0vFhEgX7z434kXOyghhdCo88CY3nfVxG7xzGnvZ29ImFYQkc502jKPulXr723yUhjuUw0JnRuxNGaiBpL5BL8rJ3KIlms%3D) 这个功能了。
const routes = [
// 动态字段以冒号开始
{ path: '/detail/:id', name:'detailPage', component: detailPage },
]
只是不知道如何携带 "params" 参数跳转。因为大部分时候我们都是使用 "path" 去跳转的,而不是 "name"。
那么现在会有两种方式可以选择:
1. 直接拼接在你的 "path" 后方: "this.$router.push('/detail/' + data.detail_id})"
2. 使用 "name" 跳转:"this.$router.push({ name: 'detailPage', params: { id: data.detail_id }}"
在页面中获取 "ID"
// vue2
export default() {
computed: {
detailId() {
return this.$route.params.id
}
}
}
"#导航到不同的位置 - 编程式导航 | Vue Router" (https://link.segmentfault.com/?enc=FrW%2FmonwImahY1Tvf6O5Ww%3D%3D.vSgWkyzQIOsFBEovlc3NpSZeC%2BAH9I6rCqnOW%2B7UmhxKEabcZBbtq%2FVFnCGcQhtuxSyRWg9rNDSUvl6cdiNyr8fDNu8gEeVNG%2FSnP6OvjcAYBS0fFWz0yCmkyh3zHusXhJ7%2Bu2vvCbSxZzdcDbP2jB7n%2B3CZmfmihczwTgmEZanZPBRT9jjVL1NLNqOqgaNz)
***
接口何时触发请求?
这得看你的 "router-view" 部分是如何设计的,如果是按照 "fullPath" 设置的,那么可以在组件的生命周期内 "created/mounted" 来触发接口请求。
如果没有显式声明或者使用 "name" 来设置的,那么需要你监听 "computed" 中 "detailId" 的改变来触发接口调用。
怎么说呢就这样吧
如图所示这是什么编码字体?
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725018110725_8Lo7.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725018110725_8Lo7.png)
怎么说呢就这样吧
flex布局多层嵌套,横向滚动时,当滚动到最左边时,数据为什么不能显示完整?
相关代码
.container {
margin: 80px;
width: auto;
}
.cmp-main {
display: flex;
overflow: auto;
flex-direction: column;
align-items: center;
position: relative;
width: 100%;
}
.cmp-core {
background-color: #f5f5f7;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.process-core {
display: flex;
flex-direction: column;
align-items: center;
}
.item-wrap {
display: flex;
flex-direction: column;
justify-content: center;
flex-wrap: nowrap;
}
.item {
width: 230px;
margin-top: 5px;
cursor: pointer;
border: 1px solid white;
background-color: white;
border-radius: 0 0 6px 6px;
}
.item-condition {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.condition {
position: relative;
display: flex;
}
.condition .item-wrap {
position: relative;
display: flex;
flex-direction: row;
}
.condition .item-wrap .item {
position: relative;
display: flex;
width: 500px;
height: 100px;
border: 1px solid red;
}
头部
数据1
数据2
数据3
数据4
数据5
运行以上代码,能出现横向滚动条,但滚动到最左边时,为什么数据不能显示完整。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725017320316_jpT7.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725017320316_jpT7.png)
怎么说呢就这样吧
Initial connection耗时间隔性很长,该怎么排查?
Initial connection耗时间隔性很长
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725012918663_LhqG.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1725012918663_LhqG.png)
同接口同参数,Initial connection一次300ms左右,一次几乎没有。
环境是本地,有大佬知道怎么排查吗?
怎么说呢就这样吧
如何从根目录拉取docs.spring.io的所有文档?
如题,这是Spring的文档列表。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724926840632_2GAG.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724926840632_2GAG.png)
我想从根目录拉取资料,但是点击“Parent Directory”,返回的却是网页,如下图:
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724926851216_CDGr.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724926851216_CDGr.png)
感觉这也不是ftp协议。
所以到底该如何才能从根目录获取完整的目录和文件呢?
怎么说呢就这样吧
springboot能否把excel文件发送到指定位置?
如题,接到一个需求,大概的意思是:
1、我先调一个接口,拿到一个excel文件。
2、把这个文件上传到ftp里的某个位置。
怎么说呢就这样吧
使用 vue-cli,如何把 css 变成行内样式?
我使用的是 webpack4 版本。
默认打包出来的 chunk-vendors.css 是 link 的形式在页面里的。
使用什么样的配置可以把 chunk-vendors.css 里的样式抽出来直接放在 标签里?
例如:
.wrap{width:100px;height:100px}....
在网上搜了一下,使用 ejs 模板的方式不起作用:
怎么说呢就这样吧
wepack 配置externals ,项目启动报错bundle.js:2 Uncaught ReferenceError: axios is not defi
craco.config.js 中配置如下:
webpackConfig.externals = {
axios: 'axios',
};
public/index.html 中引入
https://cdn.bootcdn.net/ajax/libs/axios/0.27.2/axios.js
react项目启动报错:
bundle.js:2 Uncaught ReferenceError: axios is not defined
怎么说呢就这样吧
Webpack 可以与 Node.js Express 项目结合使用吗?
在前端项目中,Webpack 可以做到很多实用的事情,比如:
设置路径别名,比如可以用 @ 代替 src。
使用 import 语法来引用模块。
兼容多种文件格式,如 .js, .jsx, .ts 等。
但对于后端的 Node.js Express 项目,似乎很少听说有人使用 Webpack。我知道上述功能可以通过手动配置在 Node.js 项目中实现,但如果能有一个类似 Webpack 的工具就好了。
请问有这样的工具吗?我不希望为了实现这些功能而一个个找解决方案进行配置。
求指点!
怎么说呢就这样吧
Vue为何打包后的样式不一致?
有两个组件""和"",代码如下:
export default {
name: 'Layout',
}
.header {
background: linear-gradient(135deg, #7f7fd5, #86a8e7, #91eae4);
height: 100px;
display: flex;
align-items: center;
}
Installed CLI Plugins
import Layout from './Layout.vue'
export default {
name: 'HelloWorld',
components: { Layout },
}
.header {
background: rgb(38, 57, 224);
height: 200px;
}
此时打包后样式应用如下:
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724844005103_a1Ci.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724844005103_a1Ci.png)
第一个"header"使用第一组样式,第二个"header"在继承的基础上覆盖了部分样式
但将"layout"最外一层"div"标签去掉后:
变成
再次打包,得到的结果是
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724844019251_5nqC.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724844019251_5nqC.png)
两个"header"应用相同的样式
请问为什么多了一层"div"标签会造成打包结果不同?
怎么说呢就这样吧
webpack采用esm打包,打包后tree shaking失效,请问如何解决?
webpack采用esm打包,打包后tree shaking失效,请问如何解决?
我尝试调整webpack配置,如下:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
const isProduction = process.env.NODE_ENV === 'production';
const outputType = process.env.OUTPUT_TYPE;
/** @type {import('webpack').Configuration} */
const config = {
entry: isProduction ? './components/index.ts' : './demo/index.tsx',
externals: !isProduction ? {} : {
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
module: 'react'
},
"react-dom": {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
module: 'react-dom'
}
},
experiments: {
outputModule: outputType === 'esm'
},
mode: isProduction ? 'production' : 'development',
module: {
rules: [
{
exclude: /node_modules/,
test: /\.js(x?)$/,
use: [
{ loader: 'babel-loader' }
]
},
{
exclude: /node_modules/,
test: /\.ts(x?)$/,
use: [
{ loader: 'babel-loader' },
{ loader: 'ts-loader' }
]
},
{
exclude: /.min.css$/,
test: /\.(sa|sc|c)ss$/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: {
mode: 'global'
}
}
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [
'postcss-preset-env'
]
}
}
},
{ loader: 'sass-loader' }
],
}
]
},
output: outputType === 'esm' ? {
chunkFormat: 'module',
clean: true,
filename: '[name].esm.js',
library: {
type: 'module'
},
path: path.resolve(__dirname, '../es')
} : {
clean: true,
filename: '[name].js',
library: {
export: 'default',
name: 'rollup-test',
type: 'umd'
},
path: path.resolve(__dirname, '../lib')
},
plugins: [
...(!isProduction ? [new HtmlWebpackPlugin({
filename: 'index.html',
template: path.resolve(__dirname, '../demo/index.html'),
title: 'rollup-test'
})] : [])
],
resolve: {
extensions: ['.ts', '.tsx', '.js', 'jsx', '.json']
},
};
module.exports = config;
然后package.json如下:
...
"main": "lib/main.js",
"module": "es/main.esm.js",
"types": "types/index.d.ts",
"sideEffects": false,
"scripts": {
"build": "npm run generate:esm & npm run generate:umd",
"generate:esm": "cross-env BABEL_ENV=esm NODE_ENV=production OUTPUT_TYPE=esm webpack --config ./config/webpack.config.js",
"generate:umd": "cross-env BABEL_ENV=build NODE_ENV=production OUTPUT_TYPE=umd webpack --config ./config/webpack.config.js",
}
...
导出的esm文件也正常,如下
/*! For license information please see main.esm.js.LICENSE.txt */
import*as r from"react";export const id=179;export const ids=[179];export const modules={564:(r,e,t)=>{t.d(e,{bZ:()=>n,zx:()=>s,ZP:()=>a});var o=t(893);const n=function(r){var e=r.children;return(0,o.jsx)("div",{className:"alert-component",children:e})};t(846);const s=function(r){var e=r.children;return(0,o.jsx)("div",{className:"button-component",children:e})},a={Alert:n,Button:s}},251:(r,e,t)=>{var o=t(846),n=Symbol.for("react.element"),s=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(r,e,t){var o,i={},l=null,f=null;for(o in void 0!==t&&(l=""+t),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)s.call(e,o)&&!c.hasOwnProperty(o)&&(i[o]=e[o]);if(r&&r.defaultProps)for(o in e=r.defaultProps)void 0===i[o]&&(i[o]=e[o]);return{$$typeof:n,type:r,key:l,ref:f,props:i,_owner:a.current}}},893:(r,e,t)=>{r.exports=t(251)},846:e=>{e.exports=r}};import e from"./manifest.esm.js";import*as t from"./main.esm.js";e.C(t);var o=(564,e(e.s=564)),n=o.bZ,s=o.zx,a=o.ZP;export{n as Alert,s as Button,a as default};
但是通过"npm link"后"npm run build"发现"tree shaking"失效,无论是否使用,所有文件都构建了
怎么说呢就这样吧
babel 需要怎么处理才能自动引入polyfill?
bebel.config.js中配置:
module.exports = {
presets: [
['@babel/preset-env', {
targets: {
chrome: '58',
firefox: '60',
ie: '11',
},
useBuiltIns: 'usage',
corejs: 3,
}],
],
};
已安装core-js
useBuiltIns: 'usage', babel文档或者网上搜到,配置这个东西,可以自动引入polyfill,但是我在编译之后,并没有自动引入,需要怎么处理才能自动引入polyfill
怎么说呢就这样吧
vue 首屏性能优化指标?
面试被问到首屏性能优化,回答了fcp指标以及一系列的措施,但是面试官反问道用骨架屏或者背景图其实也可以解决这个问题,并且举例一般把首屏接口的响应时间作为指标会更好一些,并细化到优化到多少毫秒,这部分应该如何去回答以及如何监测首屏接口的响应时间需要用到哪些指标,并如何优化解决