zoukankan      html  css  js  c++  java
  • NPM——node package manager

    npm

        1 概述

           node package manager

            包  多个文件的集合

        2 包的分类

            全局包  在命令行使用

                (1) 安装:npm install *** -g

                (2) 自己创建全局包

            本地包  在项目中使用

                (1) 生产环境中

                (2) 开发环境中

                npm install ***jquery  默认安装的是生产依赖

                生产依赖放在 “dependencies":{} 以后删除依赖 可以通过 npm install 安装所有的依赖

                开发依赖

                npm install @babel/core --save-dev(-D)

               开发依赖放在 “devDependencies":{}

                npm install --production 安装生产依赖

                其他'peerDependencies':{}

                    'bundledDe......':{}

                    'optionalDe.....':{}

        3  package.json

            npm init    初始化一个包

    nodemon

    1 功能  每次源文件修改后   自动执行

    2 安装  npm i nodemon -g

    3 使用  nodemon **.js

    npm rm vm

        nvm node version manager

        nrm npm registry manager npm下载地址切换工具

            npm i nrm -g

            nrm use cnpm aobao等源



    input事件:

        -onchange // input value内容发生变化,则响应

        -focus()  // 获得焦点事件

    keyup键盘抬起事件

    blur失去焦点事件

    focus获得焦点事件


    document

        -createElement()

    再次深刻意识到:js创建的对象,在外部是无法获取到的。跟生命周期有关:外部获取时,内部生成的元素可能还不存在!

    典型案例:

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    </head>

    <body>

    <!-- 动态元素 && 事件委托? -->

    <div id="box">

            行数 <input type="text" name="" id="rows"> 列数 <input type="text" name="" id="columns">

    <input type="button" value="创建" id="create">

    </div>

    <script>

    function $(id) {

    return document.getElementById(id);

            }

    function createEle(ele) {

    return document.createElement(ele);

            }

    var eleCreate = document.querySelector('#create');

    eleCreate.onclick = function() {

    var rValue = $('rows').value;

    var cValue = $('columns').value;

    var eleTable = createEle('table');

    for (let index = 0; index < rValue; index++) {

    var eleTr = createEle('tr');

    for (let index1 = 0; index1 < cValue; index1++) {

    var eleTd = createEle('td');

    eleTd.innerHTML = 'aaa';

    eleTr.appendChild(eleTd);

                    }

    var eleTd = createEle('td');

    eleTd.innerHTML = '<a href="javascript:;">删除</a>';

    eleTr.appendChild(eleTd);

    eleTable.appendChild(eleTr);

                }

    eleTable.border = 1;

    $('box').appendChild(eleTable);

    // 事件委托&&事件绑定还是不够清晰

    var as = $('box').getElementsByTagName('a');

    console.log(as);

    for (var i = 0; i < as.length; i++) {

    as[i].onclick = function() {

    if (confirm('你确定要删除吗?')) {

    //获取父类删除

    this.parentNode.parentNode.remove();

                        }

                    }

                }

            };

    </script>

    </body>

    </html>


    简单经典动画:

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    </head>

    <body>

    <!-- 业务需求:

            // https://www.cnblogs.com/mercy/articles/2424882.html

            该秒表将包括两个按钮和一个用于显示时间的文本框。

            【1】当单击开始按钮时开始计时,最小单位为0.01秒,

            【2】此时再次单击按钮则停止计时,文本框显示经过的时间。

            【3】另外一个按钮用于将当前时间清零。

        -->

    <form action="somepage.asp"></form>

    <input type="text" name="txt1" id="txt1" value="0 S">

    <input type="button" value="开始" name="btnStart">

    <input type="button" value="重置" name="btnReset">

    <script>

    //获取有问题

    // var txt = document.forms[0].elements["txt1"];

    // var btnStart = document.forms[0].elements["btnStart"];

    // var btnReset = document.forms[0].elements["btnReset"];

    // console.log(btnReset);

    //后面逻辑待验证-应该问题不大

    var txt = document.querySelector('#txt1');

    var btnStart = document.getElementsByName('btnStart')[0];

    var btnReset = document.getElementsByName('btnReset')[0];

    console.dir(btnReset);

    var timer = '';

    btnStart.onclick = function() {

    if (this.value === '开始') {

    this.value = '停止';

    btnReset.disabled = true; //禁止button事件响应

    timer = window.setInterval(tip, 100);

                } else {

    this.value = '开始';

    btnReset.disabled = false;

    window.clearInterval(timer);

    txt.value = seed / 100 + " S";

                }

            };

    btnReset.onclick = function() {

    seed = 0;

    txt.value = seed + " S";

            };

    //秒表计时

    var seed = 0;

    function tip() {

    seed++;

    txt.value = seed / 10 + " S";

            }

    </script>

    </body>

    </html>

    典型封装动画函数高阶函数的例子:

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

    * {

    padding: 0;

    margin: 0;

            }

    .box {

    position: absolute;

    200px;

    height: 200px;

    background-color: blue;

            }

    p {

    position: relative;

    top: 220px;

    150px;

    height: 150px;

    background-color: pink;

            }

    </style>

    </head>

    <body>

    <!--运动函数的多次响应:解决方案,先取消定时器,然后开启定时器-->

    <div class="box"></div>

    <input type="button" value="target:100">

    <input type="button" value="target:200">

    <p></p>

    <script>

    var box = document.querySelector('.box');

    var t100 = document.getElementsByTagName('input')[0];

    var t200 = document.getElementsByTagName('input')[1];

    var pp = document.querySelector('p');

    // t100.addEventListener('click', animate(pp, 100, 20));

    // t200.addEventListener('click', animate(pp, 200, 20));

    // box.addEventListener();

    function animate(obj, target, duration, callback) {

    clearInterval(obj.timer); //防止多次响应

    obj.timer = setInterval(function() {

    // if (target > obj.offsetLeft) {

    //     var step = Math.ceil((target - obj.offsetLeft) / 10);

    // } else {

    //     var step = Math.floor((target - obj.offsetLeft) / 10);

    // }

    var step = target > obj.offsetLeft ? Math.ceil((target - obj.offsetLeft) / 10) : Math.floor((target - obj.offsetLeft) / 10);

    obj.style.left = obj.offsetLeft + step + 'px';

    if (obj.offsetLeft == target) {

    clearInterval(obj.timer);

    if (callback) {

    callback();

                        }

    return;

                    }

                }, duration);

            }

    animate(box, 500, 10, function() {

    console.log('animate over');

            });

    t100.onclick = function() {

    animate(pp, 100, 20);

            };

    t200.onclick = function() {

    animate(pp, 200, 20);

            };

    // t100.addEventListener('click', animate(pp, 100, 20));

    // t200.addEventListener('click', animate(pp, 200, 20));

    </script>

    </body>

    </html>

    ==================

    setInterval  // 多次循环

    setTimeout  //固定时间到之后的执行


    //charAt(n)——对应位置上的字符

    //charCodeAt()——对应位置上的字符编码


    //indexOf()

    //lastIndexOf()

    //substr(start,length)

    //substring(start,end)


    日期对象:

    var myDate = "";

    var year = date.getFullYear();

    var month = toTwo(date.getMonth() + 1);

    var day = toTwo(date.getDate());

    var hour = toTwo(date.getHours());

    var minute = toTwo(date.getMinutes());

    var second = toTwo(date.getSeconds());


    //倒计时

    var end = "2020/4/13";

    var endDate = new Date(end);

    var now = new Date();

    var diff = endDate.getTime() - now.getTime();

    var secondsDiff = diff / 1000;

    var days = parseInt(secondsDiff / (24 * 3600));

    var hours = parseInt(secondsDiff % (24 * 3600) / 3600);

    var minutes = parseInt(secondsDiff % (24 * 3600) / 60 % 60);

    var seconds = parseInt(secondsDiff % (24 * 3600) % 60);

    console.log(days + ":" + hours + ":" + minutes + ":" + seconds);

    简单应用:

    <h1>距离双11还剩<span id="d"></span>天<span id="h"></span>时<span id="m"></span>分<span id="s"></span>秒</h1>

    <script src="./public.js"></script>

    <script>

    var end = "2020/11/11";

    //DOM操作

    var d = document.getElementById('d');

    var h = document.getElementById('h');

    var m = document.getElementById('m');

    var s = document.getElementById('s');

    setInterval(function() {

    var endDate = new Date(end);

    var now = new Date();

    var diff = endDate.getTime() - now.getTime();

    var diffDate = new Date(diff);

    var secondsDiff = diff / 1000;

    var days = parseInt(secondsDiff / (24 * 3600));

    var hours = parseInt(secondsDiff % (24 * 3600) / 3600);

    var minutes = parseInt(secondsDiff % (24 * 3600) / 60 % 60);

    var seconds = parseInt(secondsDiff % (24 * 3600) % 60);

    console.log(days + ":" + hours + ":" + minutes + ":" + seconds);

    d.innerHTML = toTwo(days);

    h.innerHTML = toTwo(hours);

    m.innerHTML = toTwo(minutes);

    s.innerHTML = toTwo(seconds);

            }, 1000)

    </script>

    清除定时器影响

    //clearInterval(timer);

    //添加不限制个数

    // arr.push()

    // arr.unshift()

    // arr.pop()

    // arr.shift()

    // 1.从角标pos位置处删除mount个元素

    // arr.splice(pos,mount)

    // 2.从角标pos处插入元素ele1

    // ex: arr.splice(pos,0,ele1);

    // 替换 角标pso位置处的n个元素

    // ex: arr.splice(pos,mout_n,ele1,ele2,...,elen)


    //arr.slice(start,end)

    //arr.join()  //把数组的元素用指定的符号拼接为一个大的字符串

    // 不传参默认以逗号连接

    // arr.join("-");

    //concat()

    //reverse()  //逆序

  • 相关阅读:
    如何挑选适合的前端框架
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
    Spring框架文档与API(4.3.6版本)
    Spring Framework Ecosystem – Introduction to Spring Projects
    What is the difference between J2EE and Spring
    WPS添加页码不是从首页开始
    C语言文件方式输入与输出(最简洁方便实用的一种方式)
    hibernate---注解--CascadeType属性
    hibernate------java-delete-insert-update
    hibernate---注释 ----(购物:人顾客售货员boss)
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13041239.html
Copyright © 2011-2022 走看看