我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue怎么使用driver.js实现项目功能向导指引

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue怎么使用driver.js实现项目功能向导指引

这篇文章主要介绍了vue怎么使用driver.js实现项目功能向导指引的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么使用driver.js实现项目功能向导指引文章都会有所收获,下面我们一起来看看吧。

    介绍

    driver.js 是一个轻量级、无依赖的原生JavaScript引擎,在整个页面中驱动用户的注意力,强大的、高度可定制的原生JavaScript引擎,无外部依赖,支持所有主流浏览器。

    安装

    npm install driver.js

    vue怎么使用driver.js实现项目功能向导指引

    使用

    import Driver from 'driver.js';import 'driver.js/dist/driver.min.css';

    突出显示单个元素

    const driver = new Driver();driver.highlight('#create-post');

    高亮和弹出窗口

    const driver = new Driver();driver.highlight({  element: '#some-element',  popover: {    title: 'Title for the Popover',    description: 'Description for it',  }});

    定位弹出窗口

    const driver = new Driver();driver.highlight({  element: '#some-element',  popover: {    title: 'Title for the Popover',    description: 'Description for it',    // position can be left, left-center, left-bottom, top,    // top-center, top-right, right, right-center, right-bottom,    // bottom, bottom-center, bottom-right, mid-center    position: 'left',  }});

    还可以使用offset属性为弹窗位置添加偏移量

    const driver = new Driver();driver.highlight({  element: '#some-element',  popover: {    title: 'Title for the Popover',    description: 'Description for it',    position: 'bottom',    // Will show it 20 pixels away from the actual position of popover    // You may also provide the negative values    offset: 20,  }});

    创建功能介绍

    功能介绍在新用户入门时很有用,可以让他们了解应用程序的不同部分。您可以使用驱动程序无缝创建它们。定义步骤,并在你想开始展示时调用start。用户将能够使用键盘或使用弹出窗口上的按钮来控制步骤。

    const driver = new Driver();// Define the steps for introductiondriver.defineSteps([  {    element: '#first-element-introduction',    popover: {      className: 'first-step-popover-class',      title: 'Title on Popover',      description: 'Body of the popover',      position: 'left'    }  },  {    element: '#second-element-introduction',    popover: {      title: 'Title on Popover',      description: 'Body of the popover',      position: 'top'    }  },  {    element: '#third-element-introduction',    popover: {      title: 'Title on Popover',      description: 'Body of the popover',      position: 'right'    }  },]);// Start the introductiondriver.start();

    异步操作

    对于转换步骤之间的任何异步操作,可以将执行延迟到操作完成。你所要做的就是在 onNextonPrevious 回调函数中使用driver.preventMove() 停止过渡,并使用 driver.moveNext() 手动初始化它。这是一个示例实现,它将在第二步停止4秒钟,然后进入下一步。

    const driver = new Driver();// Define the steps for introductiondriver.defineSteps([  {    element: '#first-element-introduction',    popover: {      title: 'Title on Popover',      description: 'Body of the popover',      position: 'left'    }  },  {    element: '#second-element-introduction',    popover: {      title: 'Title on Popover',      description: 'Body of the popover',      position: 'top'    },    onNext: () => {      // Prevent moving to the next step      driver.preventMove();            // Perform some action or create the element to move to      // And then move to that element      setTimeout(() => {        driver.moveNext();      }, 4000);    }  },  {    element: '#third-element-introduction',    popover: {      title: 'Title on Popover',      description: 'Body of the popover',      position: 'right'    }  },]);// Start the introductiondriver.start();

    配置

    const driver = new Driver({  className: 'scoped-class',        // 封装driver.js弹窗的类名  animate: true,                    // 是否进行动画  opacity: 0.75,                    // 背景不透明度(0表示只有弹窗,没有覆盖层)  padding: 10,                      // 元素到边缘的距离  allowClose: true,                 // 点击覆盖层是否应该关闭  overlayClickNext: false,          // 下一步点击覆盖层是否应该移动  doneBtnText: 'Done',              // final按钮文本  closeBtnText: 'Close',            // 关闭按钮文本  stageBackground: '#ffffff',       // 高亮元素背后的舞台背景颜色  nextBtnText: 'Next',              // 下一步按钮文本  prevBtnText: 'Previous',          // 前一步按钮文本  showButtons: false,               // 在页脚不显示控制按钮  keyboardControl: true,            // 允许通过键盘控制(esc键关闭,箭头键移动)  scrollIntoViewOptions: {},        // 如果可能的话,我们使用`scrollIntoView()`,如果你想要任何选项,在这里传递  onHighlightStarted: (Element) => {}, // 当元素将要高亮时调用  onHighlighted: (Element) => {},      // 当元素完全高亮时调用  onDeselected: (Element) => {},       // 当元素被取消选择时调用  onReset: (Element) => {},            // 当覆盖层即将被清除时调用  onNext: (Element) => {},             // 当移动到下一个步骤时调用  onPrevious: (Element) => {},         // 在任何步骤中移动到上一步时调用});

    定义步骤

    定义步骤时可以传递的一组选项 defineSteps 或传递给 highlight 方法的对象:

    const stepDefinition = {  element: '#some-item',        // 要突出显示的查询选择器字符串或节点  stageBackground: '#ffffff',   // 这将覆盖在驱动程序中设置的  popover: {                    // 如果为空或未指定弹窗,则不会有弹窗    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口    title: 'Title',             // popover 标题    description: 'Description', // popover 描述    showButtons: false,         // 在页脚不显示控制按钮    doneBtnText: 'Done',        // 最后一个按钮文本    closeBtnText: 'Close',      // 关闭按钮文本    nextBtnText: 'Next',        // 下一个按钮文本    prevBtnText: 'Previous',    // 上一个按钮文本  },  onNext: () => {},             // 从当前步骤移动到下一步时调用  onPrevious: () => {},         // 从当前步骤移动到上一步时调用};

    突出显示单个元素时的效果

    const driver = new Driver(driverOptions);driver.highlight(stepDefinition);

    创建一个分步指南:

    const driver = new Driver(driverOptions);driver.defineSteps([    stepDefinition1,    stepDefinition2,    stepDefinition3,    stepDefinition4,]);

    API方法

    下面是可用的方法集:

    const driver = new Driver(driverOptions);// 检查driver是否激活if (driver.isActivated) {    console.log('Driver is active');}// 在步骤指南中,可以调用以下方法driver.defineSteps([ stepDefinition1, stepDefinition2, stepDefinition3 ]);driver.start(stepNumber = 0);  // 定义开始步骤driver.moveNext();             // 移动到“步骤”列表中的下一步driver.movePrevious();         // 移动到“步骤”列表中的上一步driver.hasNextStep();          // 检查是否有下一步要移动driver.hasPreviousStep();      // 检查是否有要移动到的上一个步骤// 阻止当前移动,如果你想,可以在`onNext`或`onPrevious`中使用,执行一些异步任务,然后手动切换到下一步driver.preventMove();// 使用查询选择器或步骤定义突出显示元素driver.highlight(string|stepDefinition);// 重新定位弹出窗口并突出显示元素driver.refresh();// 重置覆盖层并清空屏幕driver.reset();// 另外,你可以传递一个布尔参数// 立即清除,不做动画等// 在你运行的时候可能有用// driver程序运行时的不同实例driver.reset(clearImmediately = false);// 检查是否有高亮的元素if(driver.hasHighlightedElement()) {    console.log('There is an element highlighted');}// 获取屏幕上当前高亮显示的元素,would be an instance of `/class="lazy" data-src/core/element.js`const activeElement = driver.getHighlightedElement();// 获取最后一个高亮显示的元素, would be an instance of `/class="lazy" data-src/core/element.js`const lastActiveElement = driver.getLastHighlightedElement();activeElement.getCalculatedPosition(); // 获取活动元素的屏幕坐标activeElement.hidePopover();           // 隐藏弹出窗口activeElement.showPopover();           // 显示弹出窗口activeElement.getNode();  // 获取这个元素后面的DOM元素

    别忘了给触发 driver 的 click 绑定添加 e.stopPropagation()

    实战

    下面是我实现的一个 vue 的 demo,用的 driver.js0.9.8

    <template>    <div class='driver-demo'>        <div class="btn" @click="handleClick">向导指引</div>        <!-- 上 -->        <div id="step-item-1" class="top">            <h3>上面部分</h3>            <section>生活不过是一片混乱,充满了各种可笑的、龌龊的事情,它只能给人们提供笑料,但是他笑的时候却禁不住满心哀伤。</section>        </div>        <!-- 右 -->        <div id="step-item-2" class="right">            <h3>右边部分</h3>            <section>                月亮是那崇高而不可企及的梦想,六便士是为了生存不得不赚取的卑微收入 。多少人只是胆怯地抬头看一眼月亮,又继续低头追逐赖以温饱的六便士?            </section>        </div>        <!-- 下 -->        <div id="step-item-3" class="bottom">            <h3>下边部分</h3>            <section>我用尽了全力,过着平凡的一生。</section>        </div>        <!-- 左 -->        <div id="step-item-4" class="left">            <h3>左边部分</h3>            <section>梦想什么时候开始都不晚。</section>        </div>        <!-- 中 -->        <div id="step-item-5" class="center">            <h3>中间部分</h3>            <section>                我们每个人生在世界上都是孤独的……尽管身体互相依傍却并不在一起,既不了解别人也不能为别人所了解。            </section>        </div>    </div></template><script>// 引入资源import Driver from 'driver.js';import 'driver.js/dist/driver.min.css';export default {    name: 'DriverDemo',    data () {        return {            driverOptions: {                className: 'kaimo-driver',        // 封装driver.js弹窗的类名                animate: true,                    // 是否进行动画                opacity: 0.5,                    // 背景不透明度(0表示只有弹窗,没有覆盖层)                padding: 20,                      // 元素到边缘的距离                allowClose: true,                 // 点击覆盖层是否应该关闭                overlayClickNext: false,          // 下一步点击覆盖层是否应该移动                doneBtnText: '确定',              // final按钮文本                closeBtnText: '我知道了',            // 关闭按钮文本                stageBackground: '#fff',       // 高亮元素背后的舞台背景颜色                nextBtnText: '下一步',              // 下一步按钮文本                prevBtnText: '上一步',          // 前一步按钮文本                showButtons: true,               // 在页脚不显示控制按钮                keyboardControl: true,            // 允许通过键盘控制(esc键关闭,箭头键移动)                scrollIntoViewOptions: {},        // 如果可能的话,我们使用`scrollIntoView()`,如果你想要任何选项,在这里传递                onHighlightStarted: (Element) => {}, // 当元素将要高亮时调用                onHighlighted: (Element) => {},      // 当元素完全高亮时调用                onDeselected: (Element) => {},       // 当元素被取消选择时调用                onReset: (Element) => {},            // 当覆盖层即将被清除时调用                onNext: (Element) => {},             // 当移动到下一个步骤时调用                onPrevious: (Element) => {},         // 在任何步骤中移动到上一步时调用            }        };    },    methods: {        handleClick(e) {            // 阻止点击事件进一步传播,不加的话指引打开会关闭            e.stopPropagation();            // 初始化            const driver = new Driver(this.driverOptions);            // 自定义几个步骤            driver.defineSteps([                this.stepDefinition1(),                this.stepDefinition2(),                this.stepDefinition3(),                this.stepDefinition4(),                this.stepDefinition5(),            ]);            // 开始进行向导,默认从0开始也就是步骤1,也可以自己调整其他步骤(0可以不写)            driver.start(0);        },        stepDefinition1() {            return {                element: '#step-item-1',        // 要突出显示的查询选择器字符串或节点                // stageBackground: '#ffffff',   // 这将覆盖在驱动程序中设置的                popover: {                    // 如果为空或未指定弹窗,则不会有弹窗                    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口                    title: '步骤1',             // popover 标题                    description: '这是步骤1的向导描述', // popover 描述                    // showButtons: true,         // 在页脚不显示控制按钮                    // doneBtnText: 'Done',        // 最后一个按钮文本                    // closeBtnText: 'Close',      // 关闭按钮文本                    // nextBtnText: 'Next',        // 下一个按钮文本                    // prevBtnText: 'Previous',    // 上一个按钮文本                },                onNext: () => { // 从当前步骤移动到下一步时调用                    console.log("步骤1:onNext");                },                             onPrevious: () => { // 从当前步骤移动到上一步时调用                    console.log("步骤1:onPrevious");                },                 };        },        stepDefinition2() {            return {                element: '#step-item-2',        // 要突出显示的查询选择器字符串或节点                popover: {                    // 如果为空或未指定弹窗,则不会有弹窗                    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口                    title: '步骤2',             // popover 标题                    description: '这是步骤2的向导描述', // popover 描述                    position: 'left-center'                },                onNext: () => { // 从当前步骤移动到下一步时调用                    console.log("步骤2:onNext");                },                             onPrevious: () => { // 从当前步骤移动到上一步时调用                    console.log("步骤2:onPrevious");                },             };        },        stepDefinition3() {            return {                element: '#step-item-3',        // 要突出显示的查询选择器字符串或节点                popover: {                    // 如果为空或未指定弹窗,则不会有弹窗                    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口                    title: '步骤3',             // popover 标题                    description: '这是步骤3的向导描述', // popover 描述                },                onNext: () => { // 从当前步骤移动到下一步时调用                    console.log("步骤3:onNext");                },                             onPrevious: () => { // 从当前步骤移动到上一步时调用                    console.log("步骤3:onPrevious");                },             };        },        stepDefinition4() {            return {                element: '#step-item-4',        // 要突出显示的查询选择器字符串或节点                popover: {                    // 如果为空或未指定弹窗,则不会有弹窗                    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口                    title: '步骤4',             // popover 标题                    description: '这是步骤4的向导描述', // popover 描述                    position: 'right-center'                },                onNext: () => { // 从当前步骤移动到下一步时调用                    console.log("步骤4:onNext");                },                             onPrevious: () => { // 从当前步骤移动到上一步时调用                    console.log("步骤4:onPrevious");                },             };        },        stepDefinition5() {            return {                element: '#step-item-5',        // 要突出显示的查询选择器字符串或节点                popover: {                    // 如果为空或未指定弹窗,则不会有弹窗                    className: 'popover-class', // 除了驱动程序选项中的一般类名外,还要包装这个特定步骤弹出窗口                    title: '步骤5',             // popover 标题                    description: '这是步骤5的向导描述', // popover 描述                },                onNext: () => { // 从当前步骤移动到下一步时调用                    console.log("步骤5:onNext");                },                             onPrevious: () => { // 从当前步骤移动到上一步时调用                    console.log("步骤5:onPrevious");                },             };        }    },};</script><style lang="scss" scoped>.driver-demo {    position: relative;    text-align: center;    background-color: #eee;    padding: 40px;    .btn {        width: 100px;        height: 48px;        line-height: 48px;        border: 1px solid purple;        background-color: plum;        border-radius: 4px;        cursor: pointer;    }    .top {        position: absolute;        top: 0;        left: 400px;        width: 300px;        height: 140px;        background-color: silver;    }    .right {        position: absolute;        top: 60px;        right: 0;        width: 200px;        height: 300px;        background-color: salmon;    }    .bottom {        position: absolute;        bottom: 200px;        left: 400px;        width: 200px;        height: 100px;        background-color: skyblue;    }    .left {        position: absolute;        top: 50%;        left: 0;        width: 300px;        height: 70px;        background-color: seagreen;    }    .center {        margin: 330px auto;        width: 400px;        height: 100px;        background-color: sandybrown;    }}</style>

    效果

    实现的功能向导指引效果如下:

    vue怎么使用driver.js实现项目功能向导指引

    关于“vue怎么使用driver.js实现项目功能向导指引”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue怎么使用driver.js实现项目功能向导指引”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    vue怎么使用driver.js实现项目功能向导指引

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    vue怎么使用driver.js实现项目功能向导指引

    这篇文章主要介绍了vue怎么使用driver.js实现项目功能向导指引的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么使用driver.js实现项目功能向导指引文章都会有所收获,下面我们一起来看看吧。介
    2023-07-05

    vue如何使用driver.js实现项目功能向导指引

    driver.js是一个轻量级、无依赖的原生JavaScript引擎,在整个页面中驱动用户的注意力,强大的、高度可定制的原生JavaScript引擎,无外部依赖,支持所有主流浏览器,这篇文章主要介绍了vue如何使用driver.js实现项目功能向导指引,需要的朋友可以参考下
    2023-03-08

    浅析vue项目中如何使用Intro.js实现用户指引功能

    vue项目中怎么实现用户指引功能?下面本篇文章给大家介绍一下在vue项目中使用Intro.js实现用户指引功能的方法,希望对大家有所帮助!
    2023-05-14

    vue中怎么使用Intro.js实现用户指引功能

    今天小编给大家分享一下vue中怎么使用Intro.js实现用户指引功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是I
    2023-07-04

    vue项目中怎么使用canvas实现截图功能

    本文小编为大家详细介绍“vue项目中怎么使用canvas实现截图功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中怎么使用canvas实现截图功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现效
    2023-07-02

    Spring Boot项目怎么实现Excel导入与导出功能

    本文小编为大家详细介绍“Spring Boot项目怎么实现Excel导入与导出功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot项目怎么实现Excel导入与导出功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
    2023-07-02

    怎么使用vue路由实现网站导航功能

    本文小编为大家详细介绍“怎么使用vue路由实现网站导航功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用vue路由实现网站导航功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、首先需要按照Vue r
    2023-07-04

    怎么用Vue代码实现导出Excel功能

    这篇“怎么用Vue代码实现导出Excel功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Vue代码实现导出Excel
    2023-07-04

    springboot vue项目管理前后端怎么实现编辑功能

    这篇文章主要介绍了springboot vue项目管理前后端怎么实现编辑功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot vue项目管理前后端怎么实现编辑功能文章都会有所收获,下面我们一起
    2023-06-30

    怎么在Vue中使用better-scroll组件实现横向滚动功能

    怎么在Vue中使用better-scroll组件实现横向滚动功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、滚动的实现原理better-scroll的滚动
    2023-06-15

    在Android项目中使用Studio怎么实现引用Library

    本篇文章为大家展示了在Android项目中使用Studio怎么实现引用Library,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、引用Library1:选择你的项目,点击导航栏File -->N
    2023-05-31

    在Android项目中使用OKHttp3怎么实现一个下载功能

    这篇文章给大家介绍在Android项目中使用OKHttp3怎么实现一个下载功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。app Module下的build.gradle,代码如下apply plugin: com.
    2023-05-31

    怎么使用vue cli实现项目登陆页面

    这篇文章主要介绍“怎么使用vue cli实现项目登陆页面”,在日常操作中,相信很多人在怎么使用vue cli实现项目登陆页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用vue cli实现项目登陆页面
    2023-07-04

    怎么使用Vue实现数字加减功能

    这篇文章主要介绍“怎么使用Vue实现数字加减功能”,在日常操作中,相信很多人在怎么使用Vue实现数字加减功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Vue实现数字加减功能”的疑惑有所帮助!接下来
    2023-07-05

    怎么使用vue实现锚点定位功能

    本文小编为大家详细介绍“怎么使用vue实现锚点定位功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用vue实现锚点定位功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。这里主要是实现了一个简单的滚动触发
    2023-07-04

    怎么使用vue实现表单验证功能

    这篇文章主要讲解了“怎么使用vue实现表单验证功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用vue实现表单验证功能”吧!具体代码如下:
    2023-07-04

    怎么使用Vue实现添加好友功能

    这篇文章主要介绍了怎么使用Vue实现添加好友功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Vue实现添加好友功能文章都会有所收获,下面我们一起来看看吧。一、前置知识在开始介绍添加好友功能之前,我们需
    2023-07-06

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录