精华内容
下载资源
问答
  •  银行辞职报告怎么写1 尊敬的领导: 您好! 由于一些个人的原因,我决定向您提出辞职申请,申请与银行解除劳动合同。 离开银行并不是我的所愿,但是由于自身的条件已经达不到到银行的要求了,银行工作十分难得,...
  • 督查情况通报怎么写 督查情况通报怎么写呢?有哪些具体格式?下面小编给大家带来督查情况通报范文,供大家参考!督查情况通报范文一 各县(区)、市直各单位: 月日至月日,市软建办效能督查组会同市创模办对各县(区)所...
  • 不管是本科毕业论文还是硕士毕业论文,都要文献综述,文献综述是对所引用文献的综合评述,通过参考文献确定选题方向,确定选题后广泛阅读与选题相关的参考文献,通过自身的主观理解和研究水平对所收集的文献进行...

    不管是本科毕业论文还是硕士毕业论文,都要写文献综述,文献综述是对所引用文献的综合评述,通过参考文献确定选题方向,确定选题后广泛阅读与选题相关的参考文献,通过自身的主观理解和研究水平对所收集到的文献进行综合分析,从而提出自己的见解和研究思路。

    通常,文献综述包括四个部分:摘要、引言、主题、参考文献。

    1、摘要,字数应控制在200字左右,不宜过长或过短。论文摘要主要是对全文内容的提炼,重点在于从研究目的、研究方法、研究结论等方面进行总结。不要忘了,摘要写完后,我们还需要根据摘要的内容与论文内容,选择3-5个关键词加在摘要后面。

    2、引言,引言是论文的“开场白”,它的作用就是简单地叙述文章的研究过程,以此唤起读者继续阅读论文的欲望,可见引言的写作也十分重要。

    3、主题,文章的主要部分来自于文章的题目,题目的写作方法其实很多,没有特定的框架和格式,但是,不管你用哪种方法来写文献综述,都需要我们对所收集到的资料进行整理和分析,把文章的中心思想表达出来。

    4、参考文献,参考文献写得多,写得少,能很好地体现我们写论文时的阅读深度,往往参考文献越全面,说明我们写论文时越细心、认真。尽管说毕业论文对参考文献的数量没有严格的要求,但尽量控制在30篇左右为宜。收集文献时,建议可多方面阅读,从中选择适合自己写作论据的主题,但尽量选择近些年来的文献作为参考,对时间较早的文献不宜过多,要避免观点过于陈旧,可适当引用与研究相关的经典文献。

    4c16e5af19d5ef68675a7237b8c37211.png
    展开全文
  • 简单的辞职信怎么写 1.公司领导: 本人由于个人原因,准备和公司解除劳动关系,为此给公司带来不便敬请谅解!请于审批,并安排人员接手我的工作。 此致! 敬礼! 申请人:*** 时间:******* 2.尊敬的领导: 您好...
  • 点击上方蓝字“C语言修仙”关注...想法是一个循环,循环里依次除以2这个数减1的所有的整数,如果都不能整除,说明这个数是素数;如果出现一个能整除的数,那么这个数不是素数。(其实,判断素数还可以优化,循...
    点击上方蓝字“C语言修仙”关注公众号哦

    先给出素数的定义:

    • 素数是只能被1和自身整出的整数。

    • 1不是素数

    算法思考:

    判断一个数是不是素数,只需要判断它是不能只能被1和自身整除。

    那怎么判断一个数不能被除1和自身之外的其他数整除呢?想法是写一个循环,循环里依次除以从2到这个数减1的所有的整数,如果都不能整除,说明这个数是素数;如果出现一个能整除的数,那么这个数不是素数。

    (其实,判断素数还可以优化,循环里依次除以从2到这个数平方根的所有的整数就可以了。因为假设一个数n,除以2~根号n的整数,都不能整除,那么除以根号n~n-1的整数也不能整数。在文章最后再贴上优化的代码。)

    那怎么判断能不能整除呢?我么知道C语言有求余数的运算符%,如果余数是0,那么说明能整除了。

    我们来写程序代码。这里,说明一下,当你写一个具有某个功能的代码的时候,把这个功能写成一个函数,而不是所有的代码都放在main函数里。在main函数里调用这个你写的函数。

    给函数命名,如果你知道或者查到了素数的英文单词是prime number,那么函数可以起名为 is_primer_number(如果你不知道素数的英文单词,那么随便起个名字也可以,比如叫fun)。因为要传递一个代判断的整数,所以有一个int类型参数。返回值我们用bool型(代码里要包含头文件stdbool.h),如果是素数返回true,如果不是素数返回false。

    代码:

    bool is_prime_number(int a){

        for (int i = 2; i 
            if (a % i == 0)

                return false;

        }



        return true;

    }

    判断是不是素数的函数写好了。题目是要求1到1000之间所有的函数。你可以再写一个函数,函数的功能是求1到某个整数之间的所有素数并打印。函数命名为print_prime_num。有一个int类型参数。返回值我们写为整型,返回素数的个数。

    循环把2到这个数之间的每个整数,作为参数,传给上面写的函数is_prime_number(),如果是素数,就打印。

    int print_prime_number(int a){

        int count = 0;



        for (int i = 2; i<=a; i++ ){

            if(is_prime_number(a)){

                count++;

                printf("%d\n", a);

            }

        }

    }

    main函数的写法。输入一个整数,作为参数,传给函数print_prime_number()处理:

    int main (){

        int a;

        printf("求1到一个整数之间所有的素数.\n");

        printf("请输入一个整数: \n");

        scanf("%d", &a);

        print_prime_number(a);

        return 0;

    }

    运行结果:

    260e83d0eef36c81feebcedbd37f34f3.png

    优化

    判断素数的函数还可以优化,循环里依次除以从2到这个数平方根的所有的整数就可以了。因为假设一个数n,除以2~根号n的整数,都不能整除,那么除以根号n~n-1的整数也不能整数。所以我们只要循环2~根号n之间的数就可以了。

    函数is_prime_number()可以写为下面这样。这里用到了求平方根的函数sqrt(),要包含头文件math.h。另外,函数sqrt()的返回类型是double,但是这里我们要的是整数,所以加上(int)强制转换为整型。

    bool is_prime_number(int a){

        for (int i = 2; i int)sqrt(a) +1 ; i++){

            if (a % i == 0)

                return false;

        }

        return true;

    }

    运行结果:

    92a0dd9ac4c1776b026c8c623b438caf.png

    点击这里留言和查看留言哦!

    在看和收藏也是对作者的鼓励哦!

    70d3f32963ca7fe8fe07b214a3442fc1.png

    展开全文
  •  本书以“动手”为指导思想,只要是跟“动手”操作系统有关的知识,都作为介绍对象加以讨论,所以,开发环境的搭建,保护模式,再IBMPC中有关芯片的知识,最后操作系统本身的设计实现,都能在本文中...
  • 1、linux操作系统是redhat7.0 2、服务器ip是192.168.91.136。客户端ip是192.168.91.200 ...我该怎么配置,或者怎么写脚本,才能在查看服务器日志审计记录时,显示的是上传的客户端的ip地址而不是localhost呢?
  • 现在的程序能够实现通每隔200ms小蛇自动往前跑一格,通过键盘指令能够改变方向,但是我不想让它自动跑,只想实现给它指令它才移动,请问怎么实现? 这是蛇的活动类 ``` package com.tcs.cn; import java.awt....
  • 我的网站首页导航其他网页,其他数据都是数据库读取的数据。我想要在首页显示几条最近的数据,例如只显示新闻页面的前5条,点击读取更多跳转新闻页面。我的首页使用table,一部分填充了news_widget.html页面。 我...
  • //service是引用进来的接口类,out_order_search是我的方法 protected void out_order_search() { string strdate = string.Empty; string user = commonws.GetYWType("SAP接口用户名"); string password = ...
  •  本书以“动手”为指导思想,只要是跟“动手”操作系统有关的知识,都作为介绍对象加以讨论,所以,开发环境的搭建,保护模式,再IBMPC中有关芯片的知识,最后操作系统本身的设计实现,都能在本文中...
  • 网管教程 入门精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...
  • ASP的网站。     【前提】在“专家级别”这个下拉框中有“ ”和“A类专家”和“普通专家”这三个选项。默认是“ ”,然后每次页面加载的时候,数据库中读取“专家级别”的数据,赋值...
  • 我做好了一个欢迎界面,并且做了下按钮触发,里面什么都还没有,我这边有一个游戏主程序,应该怎么样才能合理的添加进去呢? 添加的结果就是 点击这个按钮 就进入这个主程序。下面是代码 这个是我的欢迎界面的代码...
  • :”,其中问号处应填入当前的数据组数,组数从1开始计算。 每组测试数据输出一行,输出一个整数,代表根据最优的打法,你走右上角时可以获得的最大金币数目。 Sample Input 2 3 4 1 -1 1 0 2 -2 4 2 3...
  • :”,其中问号处应填入当前的数据组数,组数从1开始计算。 每组测试数据输出一行,输出一个整数,代表根据最优的打法,你走右上角时可以获得的最大金币数目。 Sample Input 2 3 4 1 -1 1 0 2 -2 4 2 3...
  • VW10 从130,就是重复执行30次,这句话不像是人话啊,大家都喜欢我说人话。 假设某个人被拘留30天,日子好难熬啊,他就在墙上个数字,从1开始,第二天就把1改成2,第三天就把2改成3,以此类推,最后数字变成...

    老师教你回家把课文抄10遍,那你就要乖乖滴回家抄10遍,你要让机器乖乖的干30次,那你就用一个FOR指令,其实啊,如果你没弄过PLC编程,我说FOR指令,估计你还是没感觉,那我怎么解释才能让你听懂呢,假如我说:

    VW10 从1变到30,就是重复执行30次,这句话不像是人话啊,大家都喜欢我说人话。

    假设某个人被拘留30天,日子好难熬啊,他就在墙上写个数字,从1开始,第二天就把1改成2,第三天就把2改成3,以此类推,最后数字变成30,他就可以出去了。

    所以这里也是一样的,VW10就是一个数字符号,一开始等于1,然后就变成2,变成3,一直到30,就不再变了。

    以后呢,等以后啊,你更熟悉了,我就不说VW10是一个符号了,我会说它是PLC的一个内存地址,它占用2个字节的空间,现在我不能这样解释,因为你会说我讲话不接地气。但是,你总有一天会对内存地址、字节、字、双字、位,熟悉的不能再熟悉,刻骨铭心!


    佳途自动化学院位于苏州市工业园区独墅湖畔,股东背景雄厚,先后获得了中路股份(股票代码:600818)、帮实科技(股票代码:872038)厚石资本、江山恒创等多家上市公司及地方国资委创投基金投资入股,专门从事工业机器人及自动化领域的技能培训,已成为国内较为领先的工业自动化人才专业培训机构,大家不妨去看看吧:https://edu.jiatuxueyuan.com

     

    展开全文
  • 首先呢,附上我的代码,字符串可以获取,唯独图片获取不,这该怎么办,大大们帮忙看看,给我点...其次呢,我对线程不是很了解,能不能有大大给我讲解一下它的用法,就拿我这个例子来说,应该怎么写线程就能使ui不堵塞
  • 之前问了问题,想要在首页点击链接,跳转m.html,并且指定m页面包含的iframe 的内容,按照大神的指点, ...结果页面什么都没有显示出来,因为完全不懂js,完全不知道怎么写,请指点一下问题,谢谢
  • 例如:写从设备1的地址40001开始的1个保持寄存器值12 34: 01 10 00 00 00 01 02 12 34 AB 27 其中: 01 (HEX):机地址 10 (HEX):功能码 00 (HEX):起始地址(40001-40001)高字节 00 (HEX):起始...
  • 前面讲了webpack默认只能处理JS和JSON文件,那么项目中的其他资源有怎么处理呢?我们先来看看样式文件的处理方式吧。 把demo项目的目录定义的规范一些: 把index.js移动js目录中,新建了一个styles目录,里面...

    webpack处理样式文件

    前面讲到了webpack默认只能处理JS和JSON文件,那么项目中的其他资源有怎么处理呢?我们先来看看样式文件的处理方式吧。

    把demo项目的目录定义的规范一些:

    在这里插入图片描述

    把index.js移动到js目录中,新建了一个styles目录,里面新建一个index.css,简单写一些样式。

    index.css:

    html, body {
        margin: 0;
        padding: 0;
    }
    .box1 {
        width: 100px;
        height: 200px;
    }
    

    在index.html里面添加一个div,class为box1。

    index.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>demo</title>
    </head>
    <body>
        <div class="box1"></div>
    </body>
    <!-- <script src="./index.js"></script> -->
    <script src="./build/build.js"></script>
    </html>
    

    在index.js中引入index.css。

    index.js:

    import '../styles/index.css'
    
    import {sum} from './modules/foo'
    
    console.log(sum(1, 2))
    

    上一篇中提到webpack.config.js的核心概念中,有一个loader,就是用来针对处理各种的资源,CSS样式文件需要用到两个loader,style-loader和css-loader,需要先安装这两个loader,然后修改webpack.config.js的配置。

    安装style-loader和css-loader:

    npm i style-loader css-loader -D
    

    说明一下两个loader的作用:

    • css-loader:将CSS样式添加到JS文件中。
    • style-loader:将JS中的样式作为style标签插入html中。

    所有必须要先执行css-loader,再执行style-loader。

    在webpack.config.js中添加两个loader的配置。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const {resolve} = require('path')
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: ['style-loader', 'css-loader']
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [],
        // 构建模式
        mode: 'development'
    }
    

    使用webpack命令构建项目:

    webpack
    

    用浏览器打开index.html看到样式已经生效。

    在这里插入图片描述

    再检查元素,看看dom的结构,可以看到我们的样式以style标签插入到html中了。

    在这里插入图片描述

    再看看构建处理的build.js,会发现样式被构建到了JS里面了,所以index.html只需要引入build.js,再build.js执行时,就会把样式作为style标签插入index.html中。

    在这里插入图片描述

    但是项目中往往会存在很多CSS代码的,如果全部都构建到JS中,会使JS文件变得很大,影响页面加载速度,因此我们一般希望把CSS代码提取出来,另外构建,这时我们需要用到mini-css-extract-plugin这个插件。

    提取CSS插件

    首先要安装mini-css-extract-plugin。

    npm i mini-css-extract-plugin -D
    

    为了更好看到效果,我们添加多一个CSS文件。

    在这里插入图片描述

    box2.css:

    .box2 {
        width: 100px;
        height: 100px;
        background-color: deeppink;
    }
    

    再index.html中添加一个div,class为box2。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>demo</title>
    </head>
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
    </body>
    <!-- <script src="./index.js"></script> -->
    <script src="./build/build.js"></script>
    </html>
    

    再index.js中引入box2.css。

    index.js:

    import '../styles/index.css'
    import '../styles/box2.css'
    
    import {sum} from './modules/foo'
    
    console.log(sum(1, 2))
    

    在webpack.config.js中添加mini-css-extract-plugin的相关配置。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader'
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            })
        ],
        // 构建模式
        mode: 'development'
    }
    

    步骤说明:

    1. 用require函数引入mini-css-extract-plugin。
    2. 在plugins中添加该插件的配置。
    3. 用MiniCssExtractPlugin.loader替换style-loader,因为已经不需要用JS来插入style标签了。

    用webpack命令构建项目。

    webpack
    

    构建完成后,发现build目录中多了一个styles目录,里面有一个build.css,这是我们在plugins中配置的CSS代码输出文件,所以CSS代码都提取到里面去了。

    在这里插入图片描述

    在这里插入图片描述
    build.js中对index.css构建的代码也变成了下面这样,说明用mini-css-extract-plugin处理了。

    在这里插入图片描述

    实际上CSS的提取工作已经完成了,但是我们会发现index.html根本没有引入build.css,样式肯定不会生效的,难道我们每次都要手动把资源引入到index.html中吗?当然不用,我们可以使用html-webpack-plugin来帮我们自动化引入资源。

    html文件处理插件

    首先还是要先安装html-webpack-plugin。

    npm i html-webpack-plugin -D
    

    在webpack.config.js中添加相应配置。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    // 引入html文件处理插件
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader'
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            }),
            // html文件处理插件
            new HtmlWebpackPlugin({
            	// 指定要处理的html文件
                template: './index.html'
            })
        ],
        // 构建模式
        mode: 'development'
    }
    

    步骤说明:

    1. 引入用requrie函数引入html-webpack-plugin。
    2. 在plugins中添加相应配置。

    html-webpack-plugin会自动加载所以用到的资源到指定的html中,所以index.html中的script标签也要删除,否则会重复加载。

    index.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>demo</title>
    </head>
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
    </body>
    </html>
    

    我们重新构建项目,看到build目录中多了一个index.html。

    在这里插入图片描述

    里面会自动加载build.js和build.css。

    在这里插入图片描述

    这样我们写的JS和CSS都能生效了。

    对于前端来说最头疼的莫过于浏览器兼容了,这会让我们做很多枯燥乏味的事情,现在我们只需要引入一个postcss-loader就可以通过webpack来自动完成大部分的兼容工作,解放生产力!

    样式浏览器兼容性出路

    我们需要用到postcss-loader和postcss-preset-env两个依赖,安装一下。

    npm i postcss-loader postcss-preset-env -D
    

    在webpack.config.js的css样式处理部分中追加postcss-loader的配置。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    // 引入html文件处理插件
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader',
                        // css浏览器兼容性处理
                        // !!!需要在package.json中添加browserslist配置指定浏览器兼容策略
                        {
                            loader: 'postcss-loader',
                            options: {
                                // 固定写法,不管它
                                iden: 'postcss',
                                // 使用postcss-preset-env来处理样式兼容问题
                                // 这里需要写一个返回数组的函数
                                // 固定写法,记住就行
                                plugins: () => [require('postcss-preset-env')()]
                            }
                        }
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            }),
            // html文件处理插件
            new HtmlWebpackPlugin({
                // 指定要处理的html文件
                template: './index.html'
            })
        ],
        // 构建模式
        mode: 'development'
    }
    

    在package.json中添加browserslist配置,指定浏览器兼容策略。

    package.json(不要全部复制,只需要复制browserslist项就行哦):

    {
      "name": "demo",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "css-loader": "^4.2.2",
        "html-webpack-plugin": "^4.3.0",
        "mini-css-extract-plugin": "^0.10.0",
        "postcss-loader": "^3.0.0",
        "postcss-preset-env": "^6.7.0",
        "style-loader": "^1.2.1",
        "webpack": "^4.44.1",
        "webpack-cli": "^3.3.12"
      },
      "browserslist": {
        "development": [
          "last 1 chrome version",
          "last 1 firefox version",
          "last 1 safari version"
        ],
        "production": [
          ">0.1%",
          "not dead",
          "not op_mini all"
        ]
      }
    }
    
    

    browserslist的配置分成开发环境和生产环境两部分,开发环境我们简单配置:last 1 chrome version就是最后一个版本的chrome浏览器的意思,后面同理。

    生产环境这里的配置是:

    • 0.1%:兼容99.9%以上的浏览器。

    • not dead:不兼容已经被弃用的浏览器。
    • not op_mini all:不兼容opera mini所有版本浏览器,因为已经基本没人用了。

    npm官网有browserslist的详细说明,大家有兴趣去了解一下。

    browserslist

    为了看到效果,我们在index.css中添加一些存在兼容性问题的样式。

    index.css:

    html, body {
        margin: 0;
        padding: 0;
    }
    .box1 {
        width: 100px;
        height: 200px;
        background-color: pink;
        display: flex;
        backface-visibility: hidden;
    }
    .box2 {
        width: 100px;
        height: 100px;
        background-color: deeppink;
    }
    

    现在用webpack命令构建项目。

    webpack
    

    我们看到build.css里面自动添加了浏览器兼容的样式代码。

    在这里插入图片描述

    要注意的是,postcss-loader默认使用的是生产环境,其配置于webpack.config.js中的mode没有关系,而是使用nodejs的运行环境,所以想要切换成开发环境,需要在webpack.config.js中添加代码:process.env.NODE_ENV = 'development’

    CSS压缩

    当然,项目中的CSS都是很庞大的,我们往往希望能将其压缩一下,此时需要一个名字很长的插件帮助我们:optimize-css-assets-webpack-plugin。

    首先安装一下:

    npm i optimize-css-assets-webpack-plugin -D
    

    然后在webpack.config.js中添加插件配置。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    // 引入html文件处理插件
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    // 引入css压缩插件
    const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
    
    // browserslist的开发和生产环境切换根webpack的mode没有关系,而是读取nodejs的运行环境
    process.env.NODE_ENV = 'development'
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader',
                        // css浏览器兼容性处理
                        {
                            loader: 'postcss-loader',
                            options: {
                                // 固定写法,不管它
                                iden: 'postcss',
                                // 使用postcss-preset-env来处理样式兼容问题
                                // 这里需要写一个返回数组的函数
                                // 固定写法,记住就行
                                plugins: () => [require('postcss-preset-env')()]
                            }
                        }
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            }),
            // html文件处理插件
            new HtmlWebpackPlugin({
                // 指定要处理的html文件
                template: './index.html'
            }),
            // css压缩插件
            new OptimizeCssAssetsWebpackPlugin()
        ],
        // 构建模式
        mode: 'development'
    }
    

    步骤说明:

    1. 引入optimize-css-assets-webpack-plugin插件。
    2. 在plugins中实例化。

    构建项目看看效果,看到build.css被压缩成一行了。

    在这里插入图片描述

    对CSS样式的处理基本完成了,但是我们很多时候会使用到less、sass等CSS预处理工具,这些样式又怎么处理呢?下面我们以less为例说明。

    CSS预处理工具的构建

    其实很简单,只需要添加对应的loader就可以了。以less为例,我们需要安装less-loader,其作用是将less代码转换成css代码。

    npm i less-loader -D
    

    如果项目中没有less,还需要安装less。

    npm i less -D
    

    我们在styles文件夹中添加index.less文件。

    index.less:

    html, body {
        background-color: #666666;
        div {
            margin-bottom: 10px;
        }
    }
    

    在webpack.config.js中的rules中添加对less文件的处理。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    // 引入html文件处理插件
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    // 引入css压缩插件
    const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
    
    // browserslist的开发和生产环境切换根webpack的mode没有关系,而是读取nodejs的运行环境
    process.env.NODE_ENV = 'development'
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader',
                        // css浏览器兼容性处理
                        {
                            loader: 'postcss-loader',
                            options: {
                                // 固定写法,不管它
                                iden: 'postcss',
                                // 使用postcss-preset-env来处理样式兼容问题
                                // 这里需要写一个返回数组的函数
                                // 固定写法,记住就行
                                plugins: () => [require('postcss-preset-env')()]
                            }
                        }
                    ]
                },
                // less样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.less$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        // 用MiniCssExtractPlugin.loader代替style-loader
                        {
                            loader: MiniCssExtractPlugin.loader,
                            options: {
                                // 建议指定构建后的build目录相对路径
                                // 相对于提取的build.css的相对路径
                                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                                publicPath: '../'
                            }
                        },
                        'css-loader',
                        // css浏览器兼容性处理
                        {
                            loader: 'postcss-loader',
                            options: {
                                // 固定写法,不管它
                                iden: 'postcss',
                                // 使用postcss-preset-env来处理样式兼容问题
                                // 这里需要写一个返回数组的函数
                                // 固定写法,记住就行
                                plugins: () => [require('postcss-preset-env')()]
                            }
                        },
                        'less-loader'
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            }),
            // html文件处理插件
            new HtmlWebpackPlugin({
                // 指定要处理的html文件
                template: './index.html'
            }),
            // css压缩插件
            new OptimizeCssAssetsWebpackPlugin()
        ],
        // 构建模式
        mode: 'development'
    }
    

    说明:在rules中添加less文件的处理,我们可以看到其实跟css的出路几乎是一样的,只不过在后面添加了一个less-loader而已,less-loader只是把less文件转换成css文件而已,然后再按照css的方法来处理即可。这里的代码显得有点重复臃肿,可以将公共部分提取出来。

    webpack.config.js:

    // nodejs自带的路径解析工具
    const { resolve } = require('path')
    // 引入提取css插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    // 引入html文件处理插件
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    // 引入css压缩插件
    const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
    
    // browserslist的开发和生产环境切换根webpack的mode没有关系,而是读取nodejs的运行环境
    process.env.NODE_ENV = 'development'
    
    // 提取样式处理的公共代码
    const commonCssLoader = [
        // 用MiniCssExtractPlugin.loader代替style-loader
        {
            loader: MiniCssExtractPlugin.loader,
            options: {
                // 建议指定构建后的build目录相对路径
                // 相对于提取的build.css的相对路径
                // 这样做可以避免CSS中使用url加载其他资源时,路径错误的问题
                publicPath: '../'
            }
        },
        'css-loader',
        // css浏览器兼容性处理
        {
            loader: 'postcss-loader',
            options: {
                // 固定写法,不管它
                iden: 'postcss',
                // 使用postcss-preset-env来处理样式兼容问题
                // 这里需要写一个返回数组的函数
                // 固定写法,记住就行
                plugins: () => [require('postcss-preset-env')()]
            }
        }
    ]
    
    // commonjs的规范
    module.exports = {
        // 项目的入口JS文件
        entry: './js/index.js',
        // 输出配置
        output: {
            // 构建好的文件输出的目录
            // 这里需要绝对路径,所以要用到resolve函数来计算项目根目录的绝对路径
            // 输出到项目根目录下的build目录下
            path: resolve(__dirname, 'build'),
            // 输出文件名
            filename: 'build.js'
        },
        module: {
            // loader会写rules数组里面
            rules: [
                // css样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.css$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [...commonCssLoader]
                },
                // less样式处理
                {
                    // 正则表达式匹配需要处理的文件
                    // 匹配.css结尾的文件
                    test: /\.less$/,
                    // 需要多个loader是用use配置
                    // loader的执行顺序是从数组的最后一个元素开始
                    // 所以第一个元素是style-loader,第二个元素是css-loader
                    use: [
                        ...commonCssLoader,
                        'less-loader'
                    ]
                }
            ]
        },
        // 插件会卸载plugins数组里面
        plugins: [
            // 配置提取css插件
            new MiniCssExtractPlugin({
                // 提取的CSS代码输出在build/styles/build.css中
                filename: 'styles/build.css'
            }),
            // html文件处理插件
            new HtmlWebpackPlugin({
                // 指定要处理的html文件
                template: './index.html'
            }),
            // css压缩插件
            new OptimizeCssAssetsWebpackPlugin()
        ],
        // 构建模式
        mode: 'development'
    }
    

    重新构建项目看效果,发现less的样式也起作用了。

    在这里插入图片描述

    至此webpack对样式的处理基本完成了,喜欢的点个赞呗!

    下一篇讲解图片的处理,拜拜啦!

    webpack从入门到会玩(3)- 图片资源

    展开全文
  • 输入为m+1行,第一行为两个整数m和n,分别表示总人数和可以进入复试人数,m和n之间用空格分隔,0<n<m<200。接下来为m行数据,每行包括三项信息,分别表示一个学生的考号(字符串)、总成绩(整数)和英语单科成绩...
  • displayMsg:'显示第{0}条{1}条记录,一共{2}条', emptyMsg:'没有记录' }) }); grid.render(); ds.load({params:{start:0,limit:10}}); })    ...
  • 我在java程序中了一个controller,但是现在需要把程序通过japplet放浏览器中运行,相当于在浏览器中调用我本地的java程序,但是看了许多文章就是搞不好,我现在把我的打印的小程序发出来,求教大神怎么改 ...
  • 逻辑上说, 要么就是非常难想到,要么就是非常难代码。 这里我总结了几个技巧: 看题目的数据范围, 看能否暴力模拟 暴力枚举所有可能的算法往上套,比如图的题目。 总结和记忆解题模板,减少解题压力 以下是...
  • 你去问别人 Vue-Resource 怎么样,他说不要用 Vue-Resource,因为 Vue-Resource 官方已经停止维护了,你应该用 Axios、或者 fetch。但是我们想拥抱 ES6 排除掉了 ES5的fetch(当然也有ES6-...
  • 对每个询问,都按被引用的次数少输出满足条件的论文的标题。如果有被引用的次数相同的论文,则按照论文在输入中的顺序排列,先给出的论文排在前面。 Input 输入包含多组数据。 每组数据首先有一行...
  • 内结点个数比叶子少1</li><li>完全二叉树第 h 层的右第 k 个结点的编号为 <code>2^h + k - 1</code></li>完全二叉树叶子个数或者和内结点个数相等或者多1</li><li>完全二叉树通过本结点的编号可以快速得到...
  • Step1:先画条蛇

    2020-12-08 22:52:30
    如果写到不会写了,就不一定写了哈~ 为啥取名叫先画条蛇,毕竟是做个游戏,功能还是蛮多蛮复杂的,一口气是肯定搞不完的,所以得一步一步来,第一步就是先造条蛇!ÿ...
  • “燕云十六将”之Jerry葛涵涛

    千次阅读 热门讨论 2009-03-18 08:23:00
    涵涛跟我沟通的时候表现地很客气,不,确切地说是很谦卑,这让我感觉不错,于是决定在CSDN开博,当时根本没想着能写怎么样、写到哪步田地。后来接触多了,我们成了朋友,我才知道涵涛有着辉煌的历史、过人

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

从1写到200怎么写